Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dwie takie same wartości w tablicy
-Guest-
post 15.05.2006, 16:53:12
Post #1





Goście







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:
  1. <?
  2.  
  3. //jesli byl wyslany formularz przechodzimy do obsługi danych
  4. if(isset($_POST['wyslij']))
  5. {
  6. //Obrabiamy wszystkie zmienne przekazane metodą POST
  7. foreach ($_POST AS $klucz => $wartosc)
  8. {
  9. $wartosc= trim($wartosc);//usuwamy białe znaki
  10. $wartosc= stripslashes($wartosc);
  11. $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  12. $_POST[$klucz]=$wartosc;
  13. }
  14. $login=$_POST['login'];
  15. $haslo=$_POST['haslo'];
  16. $email=$_POST['email'];
  17.  $blad_txt='';
  18. $blad=false;
  19. //sprawdzamy czy jest wypełnine pole login
  20. if(strlen($login)<2){
  21. $blad_txt.='<div>Podaj swój <b>login</b></div>';
  22. $blad=true;
  23. }
  24. //sprawdzamy czy jest podane haslo
  25. if(strlen($haslo)<2){
  26. $blad_txt.='<div>Podaj swoje <b>hasło</b></div>';
  27. $blad=true;
  28. }
  29. //sprawdzamy czy jest podany prawidłowy adres e-mail
  30. if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)){
  31. $blad_txt.='<div>Podaj prawidłowy adres <b>e-mail</b></div><br/>';
  32. $blad=true;
  33. }
  34. if(!$blad)
  35. {
  36. //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  37. include("config.php"); 
  38. $result= mysql_query("insert into t_user values ('$id','$login','$haslo','$email')");
  39. echo "<div>Wpisane dane zostały dodane do bazy! 
  40. Kliknj <a href=\"index.php\">tutaj</a><br/><br/></div>";
  41. }
  42. else
  43. {
  44. //cos jest zle – wyświetlamy stosowne komunikaty
  45. echo $blad_txt;
  46. }
  47. }
  48. else
  49. {
  50. //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
  51. $login='';
  52. $haslo='';
  53. $email='';
  54. }
  55. //wyswietlamy formularz
  56. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">
  57. Twój login: <input class="standard" style="margin-right: 50px;" type="text" name="login" value="'.$login.'" /><br/>
  58. Twoje hasło: <input class="standard" style="margin-right: 50px;" type="text" name="haslo" value="'.$haslo.'" /><br/>
  59. Twój e-mail: <input class="standard" style="margin-right: 50px;" type="text" name="email" value="'.$email.'" /><br/>
  60. <input class="submit" type="submit" style="margin-right: 50px;" name="wyslij" value="Wyślij" /> 
  61. </form>';
  62. ?>


Z góry dziękuję za pomoc
Go to the top of the page
+Quote Post
em1X
post 15.05.2006, 17:29:03
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


Ok, a gdzie pytanie? Czego nie umiesz/nie rozumiesz?


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
-Guest-
post 15.05.2006, 17:53:11
Post #3





Goście







Chodzi mi o to żeby nie można było zarejestrować dwóch takich samych loginów smile.gif
Go to the top of the page
+Quote Post
jastu
post 15.05.2006, 18:46:53
Post #4





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

Ostrzeżenie: (0%)
-----


Przed wprowadzeniem danych / rejestracją nowego użytkownika sprawdzasz SELECT`em czy nie ma takiego loginu w kolumnie tabeli.Powodzenia


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
Yacho
post 16.05.2006, 00:07:11
Post #5





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


a nie lepiej w JS zdisablowac button po nacisnieciu ?

cos w stylu (nie znam js pisze tak sobie z palca wiec neich ktos poprawi :
Kod
OnSubmit:document.getElementBiID("mojbutton").disabled=true


to moze dosc brutalne ale swoje zadanie spełni smile.gif


--------------------
-=Yacho=-

nospor -> trzymaj sie i nie dajcie sie !
Go to the top of the page
+Quote Post
Foxx
post 16.05.2006, 00:34:40
Post #6





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Ale może przecież wejść ktoś inny za jakiś czas i powtórzyć login. Chyba najlepszy jest jednak SELECT.
Poza tym, chyba po udanej rejestracji można uzytkownika przenieść gdzieś gdzie nie będzie już formularza rejestracji, a tym bardziej formularza rejestracji z przed chwilą zarejestrowanymi danymi...
Go to the top of the page
+Quote Post
mike
post 16.05.2006, 00:44:12
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Najlepszy nie jest SELECT, bo to jest zbędne zapytanie do bazy.
Najlepszym wyjściem w tej sytuacji jest założenie na pole z loginem klucza UNIQUE.
Baza sama wykona za nas sprawdzenie przy próbie wstawienia.

Tutaj o tym pisałem: Ponowny zapis do bazy po odświeżeniu strony
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:48