Witam!
Mam rejestrację z walidacja napisaną w php. Niestetu walidacja nie chroni przed wpisanem do bazy tych samych danych. W efekcie gdy wypełni się formularz i kliknie 5 razy na przycisk wyślij to 5 rekordów takich samych zostanie dodanych do bazy. Mój kod php to:
<?
//jesli byl wyslany formularz przechodzimy do obsługi danych
if(isset($_POST['wyslij'])) {
//Obrabiamy wszystkie zmienne przekazane metodą POST
foreach ($_POST AS $klucz => $wartosc)
{
$wartosc= trim($wartosc);//usuwamy białe znaki $_POST[$klucz]=$wartosc;
}
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$email=$_POST['email'];
$blad_txt='';
$blad=false;
//sprawdzamy czy jest wypełnine pole login
$blad_txt.='<div>Podaj swój <b>login</b></div>';
$blad=true;
}
//sprawdzamy czy jest podane haslo
$blad_txt.='<div>Podaj swoje <b>hasło</b></div>';
$blad=true;
}
//sprawdzamy czy jest podany prawidłowy adres e-mail
if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)){ $blad_txt.='<div>Podaj prawidłowy adres <b>e-mail</b></div><br/>';
$blad=true;
}
if(!$blad)
{
//poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
include("config.php");
$result= mysql_query("insert into t_user values ('$id','$login','$haslo','$email')"); echo "<div>Wpisane dane zostały dodane do bazy! Kliknj <a href=\"index.php\">tutaj</a><br/><br/></div>";
}
else
{
//cos jest zle – wyświetlamy stosowne komunikaty
}
}
else
{
//wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
$login='';
$haslo='';
$email='';
}
//wyswietlamy formularz
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post"> Twój login: <input class="standard" style="margin-right: 50px;" type="text" name="login" value="'.$login.'" /><br/>
Twoje hasło: <input class="standard" style="margin-right: 50px;" type="text" name="haslo" value="'.$haslo.'" /><br/>
Twój e-mail: <input class="standard" style="margin-right: 50px;" type="text" name="email" value="'.$email.'" /><br/>
<input class="submit" type="submit" style="margin-right: 50px;" name="wyslij" value="Wyślij" />
</form>';
?>
Z góry dziękuję za pomoc