Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]problem z walidacją adresu email
imysz
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 16.08.2009

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


Witam. Tworzę formularz rejestracji i mam problem z sprawdzeniem poprawności adresu email. by był on w formacie np. nazwa@gmail.com.
stosuję taki fragment do tego:

  1. function valid_email($email)
  2. {
  3. if (preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)
  4. *@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $email))
  5. return true;
  6. else
  7. return false;
  8. }
  9.  
  10. if (!valid_email($email))
  11. echo "poprawny";
  12. else echo "Nie poprawy adres e-mail";


ale mimo wpisania niepoprawnego adresu(np. nazwa) rekord dodaje się do bazy

oto cały kod kod, poprawnie jest napisany?:

  1. <?php
  2.  
  3.  
  4. $login = $_POST['login'];
  5. $haslo = $_POST['haslo'];
  6. $haslo2 = $_POST['haslo2'];
  7. $email = $_POST['email'];
  8.  
  9.  
  10.  
  11.  
  12. $login = trim($login);
  13. $haslo = trim($haslo);
  14. $haslo2 = trim($haslo2);
  15. $email = trim($email);
  16.  
  17. // sprawdzenie poprawnosci loginu
  18.  
  19. if(!$login || !$haslo || !$haslo2 || !$email)
  20. {
  21. if(empty($login))
  22. {
  23. echo 'Pole login nie zostało wypełnione<br/>';
  24. }
  25.  
  26. $db= mysql_connect('localhost', 'db994313', 'pizgafurtke');
  27. mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  28. mysql_select_db('db994313');
  29.  
  30. $zapytanie = "select * from uzytkownicy where login='$login'";
  31. $wynik_login = mysql_query($zapytanie);
  32. $wynik_login_rezultat = mysql_num_rows($wynik_login);
  33. if($wynik_login_rezultat > 0)
  34. {
  35. echo 'Login jest już używany<br/>';
  36. }
  37.  
  38. if(strlen($login)<5)
  39. {
  40. echo 'Login powinien zawierać przynajmniej 5 znaków<br/>';
  41. }
  42.  
  43. if(strlen($login) > 16)
  44. {
  45. echo 'Login powinien zawierać maksynmalnie 16 znaków';
  46. }
  47.  
  48. // sprawdzenie hasla
  49. if(empty($haslo))
  50. {
  51. echo 'Pole haslo nie zostalo wypelnione<br/>';
  52. }
  53. if(empty($haslo2))
  54. {
  55. echo 'Pole z potwierdzeniem hasła nie zostało wypełnione<br/>';
  56. }
  57. if(strlen($haslo) < 4)
  58. {
  59. echo 'Hasło powinno zawierać przynajmniej 5 znaków<br/>';
  60. }
  61. if(strlen($haslo2) <5)
  62. {
  63. echo 'Hasło powinno zawierać przynajmniej 5 znaków<br/>';
  64. }
  65. if($haslo !=$haslo2)
  66. {
  67. echo 'Podane hasła różnią się do siebie<br/>';
  68. }
  69.  
  70. // sprawdzenie adresu email
  71. if(empty($email))
  72. {
  73. echo 'Pole email nie zostało wypełnione';
  74. }
  75.  
  76. $zapytanie_email = "select * from uzytkownicy where email='$email'";
  77. $wynik_email = mysql_query($zapytanie_email);
  78. $wynik_email_rezultat = mysql_num_rows($wynik_email);
  79. if($wynik_email_rezultat > 0)
  80. {
  81. echo 'Podany email jest już zarejestrowany<br/>';
  82. }
  83.  
  84. function valid_email($email)
  85. {
  86. if (preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)
  87. *@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $email))
  88. return true;
  89. else
  90. return false;
  91. }
  92.  
  93. if (!valid_email($email))
  94. echo "poprawny";
  95. else echo "Nie poprawy adres e-mail";
  96.  
  97. }
  98. else{
  99. $zapytanie_dodaj = "insert into uzytkownicy values('".$login."', sha1('".$haslo."'), '".$email."')";
  100. $wyslij_zapytanie = mysql_query($zapytanie_dodaj);
  101. if($wyslij_zapytanie){
  102. echo 'Rejestraja ukończona pomyślnie';
  103. }
  104.  
  105.  
  106.  
  107. }
  108. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Wszystko się da (IMG:style_emoticons/default/smile.gif)
Ja z reguły gdy nie korzystam z obiektówki robię pseudo-podział w jednym pliku dla formularzy na zasadzie.
  1. <?php
  2. $pola = array (
  3. 'pole' => 'default'
  4. );
  5. $field_errors = array();
  6. if( isset( $_POST ) AND !empty( $_POST ) ) {
  7. if( array_key_exists('save', $_POST) ) {
  8. //w zależności jaki typ pola dodaję czasem if( array_key_exists( 'pole', $_POST ) )
  9. //ale zawsze na bank jest to co poniżej, no chyba, że oczekuję 0, to wtedy inaczej ;)
  10. if( !empty( 'pole' ) ) {
  11. //tutaj jakaś dodatkowa walidacja itp
  12. $field['pole'] = $_POST['pole'] //ale $_POST['pole'] już po obróbce jest tu!
  13. } else {
  14. $field_errors['pole'] = 'Komunikat błędu';
  15. }
  16. }
  17. if( count( $field_errors ) == 0 ) {
  18. //tutaj zapis do bazy, ewentualne przekierowania itp bo znaczy, że wszystko OK
  19. } else {
  20. //wywalam na ekran, że są błedy formularza i jest on do poprawki
  21. }
  22. }
  23. ?>
  24. <html>
  25. <head>
  26. //sekcja head
  27. </head>
  28. <body>
  29. <form method="post" action="">
  30. <input name="pole" value="<?php echo $field['pole'] ?>" />
  31. <input type="submit" name="save" value="zapisz" />
  32. <?php
  33. if( $field_errors['pole'] )
  34. //wywalam komunikat pod polem go tyczącym :)
  35. ?>
  36. </form>
  37. </body>
  38. </html>
To tak w telegraficznym skrócie! Resztę przemyśl...
EDIT: Formularz tego typu to fajny sposób jeśli chcesz sobie zrobić wstęp do obiektówki. Bo można to co podałem jeszcze nieco przerobić i sobie piszesz własną klasę do tworzenia i walidacji formularzy.

Ten post edytował thek 18.02.2010, 22:15:53
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 12:06