Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrazenia regularne, znowu ? :)
Forum PHP.pl > Forum > PHP
Rafiki
Witam, mam jedna prosbe, otoz napisalem sobie warunki z preg_match walidujace poprawnosc pol w formularza , wiekszosc dziala ok ale nie wszystkie :/ kod wyglada tak:

  1. <?
  2. if ( $_POST['password'] == $_POST['password_retype'] )
  3. {
  4. if ( $_POST['email'] == $_POST['email_retype'] )
  5. {
  6. if ( preg_match('/[w.]+/', $_POST['login']) )
  7. {
  8. if ( preg_match('/[w.]+/', $_POST['password']) )
  9. {
  10. if ( preg_match('/[a-zA-Z±ćęłńó¶ĽżˇĆŁŃÓ¦¬Ż]+/', $_POST['first_name']) )
  11. {
  12. if ( preg_match('/[a-zA-Z±ćęłńó¶ĽżˇĆŁŃÓ¦¬Ż]+/', $_POST['last_name']) )
  13. {
  14. if ( preg_match('/([w.]+)(@)([w.]+)(.)([a-zA-Z]){2,4}/', $_POST['email']) )
  15. {
  16. if ( is_numeric($_POST['gg']) || empty($_POST['gg']) )
  17. {
  18. if ( preg_match('/[w.]+/', $_POST['tlen']) || empty($_POST['tlen']) )
  19. {
  20. $query = // zapytanie do bazy mysql
  21.  
  22. if ( $query )
  23. {
  24. $error = $error.'Użytkownik został dodany do bazy pomy¶lnie ! '.$br.' <a href="admins.php">Powrót do poprzedniej strony.</a>'.$br;
  25. }
  26. else
  27. {
  28. $error = $error.'Użytkownik nie został dodany do bazy, skontaktuj się z administratorem ! ';
  29. }
  30. }
  31. }
  32. else
  33. {
  34. $error = 'Login tlen zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  35. }
  36. }
  37. else
  38. {
  39. $error = 'Numer gg zawiera niedozwolone znaki ( używaj tylko cyfr ) ! ';
  40. }
  41. }
  42. else
  43. {
  44. $error = 'Adresy e-mail jakie podałe¶ nie s± zapisane w formacie: <b>login@serwer.domena</b> ! ';
  45. }
  46. }
  47. else
  48. {
  49. $error = 'Podane nazwisko jest zapisane w złej postaci ( używaj tylko liter ) ! ';
  50. }
  51. }
  52. else
  53. {
  54. $error = 'Podane imię jest zapisane w złej postaci ( używaj tylko liter ) ! ';
  55. }
  56. }
  57. else
  58. {
  59. $error = 'Hasło zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  60. }
  61. }
  62. else
  63. {
  64. $error = 'Login zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  65. }
  66. }
  67. else
  68. {
  69. $error = 'Adresy e-mail ,które podałe¶ nie s± identyczne ! ';
  70. }
  71. }
  72. else
  73. {
  74. $error = 'Hasła ,które podałe¶ nie s± identyczne ! ';
  75. }
  76. }
  77. else
  78. {
  79. $error = 'Nie wypełniłe¶ wymaganych pól formularza ! ';
  80. }
  81. ?>


nie ktore pola zle mi waliduje :| chociazby adres tlen, gdy wpisze znaki specjalne to i tak przechodzi walidacje i uzytkownik jest dodawany :| Nie mam pojecia gdzie sa bledy
crash
Jak na mój gust to każde wyrażenie jest tutaj błędne... Zapomniałe¶ o ograniczeniu cało¶ci przez ^ $... I dla warto¶ci liczbowych proponuję jednak [0-9]+...
FiDO
Pozatym struktura tego kodu moze przyprawic o dreszcze.. Jak wciecia siegaja polowy strony to z reguly znaczy, ze cos jest nie tak z kodem i ja sie z tym zgadzam. Wciecia sa oczywiscie niezbedne, ale jesli ktos robi takie pietrusy to przestaje to byc ladne..
Strach pomyslec, jakby to wygladalo, gdybys mial w ten sposob walidowac formularz niebanalnych rozmiarow..
Lepiej to zaneguj.. sprawdzasz kazdy warunek po kolei tylko, ze zanegowany i jesli zostanie spelniony to ustawiasz $error. W ten sposob unikasz takich kosmicznych wciec.
Rafiki
crash i FIDO dzieki za rady smile.gif

Niestety czasem nie mysle tongue.gif trzeba to zmienic smile.gif

Aktualnie kod ( a wlasciwie juz cala funkcja do walidacji wyglada tak, chcialbym sie was poradzic ( bo jak widac z php mam od nie dawna stycznosc ) czy wszystko jest ok ? czy moze jeszcze cos nalezy zmienic ?

  1. <?php
  2. function set_inspection_add_admins()
  3. {
  4. global $error, $br;
  5.  
  6. if ( empty($_POST['login']) && empty($_POST['password']) && empty($_POST['password_retype']) && empty($_POST['first_name']) && empty($_POST['last_name']) && empty($_POST['email']) && empty($_POST['email_retype']) )
  7. $error = 'Nie wypełniłe¶ wymaganych pól formularza ! ';
  8.  
  9. if ( $_POST['password'] !== $_POST['password_retype'] )
  10. $error = $error.'Hasła ,które podałe¶ nie s± takie same ! ';
  11.  
  12. if ( $_POST['email'] !== $_POST['email_retype'] )
  13. $error = $error.'Adresy e-mail ,które podałe¶ nie s± takie same ! ';
  14.  
  15. if ( !preg_match('/^[w.]+$/', $_POST['login']) )
  16. $error = $error.'Login zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  17.  
  18. if ( !preg_match('/^[w.]+$/', $_POST['password']) )
  19. $error = $error.'Hasło zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  20.  
  21. if ( !preg_match('/^[a-zA-Z±ćęłńó¶ĽżˇĆŁŃÓ¦¬Ż]+$/', $_POST['first_name']) )
  22. $error = $error.'Podane imię jest zapisane w złej postaci ( używaj tylko liter ) ! ';
  23.  
  24. if ( !preg_match('/^[a-zA-Z±ćęłńó¶ĽżˇĆŁŃÓ¦¬Ż]+$/', $_POST['last_name']) )
  25. $error = $error.'Podane nazwisko jest zapisane w złej postaci ( używaj tylko liter ) ! ';
  26.  
  27. if ( !preg_match('/^([w.]+)(@)([w.]+)(.)([a-zA-Z]){2,4}$/', $_POST['email']) )
  28. $error = $error.'Adresy e-mail jakie podałe¶ nie s± zapisane w formacie: <b>login@serwer.domena</b> ! ';
  29.  
  30. if ( !preg_match('/^[0-9]+]$/', $_POST['gg']) || empty($_POST['gg']) )
  31. $error = $error.'Numer gg zawiera niedozwolone znaki ( używaj tylko cyfr ) ! ';
  32.  
  33. if ( !preg_match('/^[w.]+$/', $_POST['tlen']) || empty($_POST['tlen']) )
  34. $error = $error.'Login tlen zawiera niedozwolone znaki ( nie podawaj znaków specjalnych oraz polskich liter ) ! ';
  35.  
  36. if ( empty($error) )
  37. {
  38. $query = mysql_query('SELECT login, password, chmod FROM admins WHERE login=''.$_POST['login'].''');
  39. $result = mysql_fetch_assoc($query);
  40.  
  41. if ( $result )
  42. {
  43. $error = 'Użytkownik o takim loginie istnieje ! ';
  44. }
  45. else
  46. {
  47. if( $_POST['chmod_root'] == '' ) $_POST['chmod_root'] = 0;
  48. if( $_POST['chmod_admins'] == '' ) $_POST['chmod_admins'] = 0;
  49. if( $_POST['chmod_users'] == '' ) $_POST['chmod_users'] = 0;
  50. if( $_POST['chmod_categories'] == '' ) $_POST['chmod_categories'] = 0;
  51. if( $_POST['chmod_news'] == '' ) $_POST['chmod_news'] = 0;
  52. if( $_POST['chmod_articles'] == '' ) $_POST['chmod_articles'] = 0;
  53. if( $_POST['chmod_comments'] == '' ) $_POST['chmod_comments'] = 0;
  54.  
  55. $true_chmod = $_POST['chmod_root'].'.'.$_POST['chmod_admins'].'.'.$_POST['chmod_users'].'.'.$_POST['chmod_categories'].'.'.$_POST['chmod_news'].'.'.$_POST['chmod_articles'].'.'.$_POST['chmod_comments'];
  56.  
  57. $query = mysql_query('INSERT INTO admins VALUES (''.NULL.'', CURDATE(), ''.$_POST['login'].'', ''.SHA1($_POST['password']).'', ''.$true_chmod.'', ''.$_POST['first_name'].'', ''.$_POST['last_name'].'', ''.$_POST['email'].'', ''.$_POST['gg'].'', ''.$_POST['tlen'].'')');
  58.  
  59. $send_mail = @mail($_POST['email'], 'Zostałes nowym użytkownikiem: '.$config['site_name'].'', 'Witaj !'.$br.'Zostałe¶ nowym użytkownikiem na stronie: '.$config['site_name'].'. Aby się zalogować odwiedĽ stronę: '.$$config['url_site'].$br.$br.' Podaj±c dane: '.$br.$br.' Login: '.$_POST['login'].$br.' Hasło: '.$_POST['password'].$br.$br.' W razie jakich kolwiek problemów skontaktuj się z administratorem serwisu !. '.$br.$br.' Życzymy miłego dnia, zespół: '.$config['site_name'].'','From: '.$config['email_admin'].''); 
  60.  
  61. if ( !$send_mail )
  62. $error = 'E-mail do użytkownika z zawiadomieniem iż został dodany do bazy nie dotarł ! '.$br.' Najprawdopodbniej serwer SMTP w konfiguracji php jest Ľle skonfigurowany !'.$br.$br;
  63.  
  64. if ( $query )
  65. {
  66. $error = $error.'Użytkownik został dodany do bazy pomy¶lnie ! '.$br.$br.' <a href="admins.php">Powrót do poprzedniej strony.</a>'.$br;
  67. }
  68. else
  69. {
  70. $error = $error.'Użytkownik nie został dodany do bazy, skontaktuj się z administratorem ! ';
  71. }
  72. }
  73. }
  74. }
  75. ?>
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.