Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]zagadnienie z walidacją
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Hej. Pracuję nad skryptem sprawdzania danych w PHP. Javascript jest możliwa do wyłączenia w opcjach przeglądarki, dlatego myślę, że to jest lepszy pomysł. Ale do rzeczy. Mam taki kod:
  1. if(isset($_POST['submit']))
  2. {
  3. foreach ($_POST AS $klucz => $wartosc)
  4. {
  5. $wartosc = trim($wartosc);//usuwamy białe znaki
  6. $wartosc = stripslashes($wartosc);
  7. $wartosc = htmlspecialchars($wartosc, ENT_QUOTES);
  8. $_POST[$klucz] = $wartosc;
  9. }
  10.  
  11. $login = $_POST['login'];
  12. $password = $_POST['password'];
  13. $e_mail = $_POST['e_mail'];
  14.  
  15. if(strlen($login)<4){
  16. $blad_txt.='Podaj login<br/>';
  17. $blad=true;
  18. }
  19.  
  20. if(strlen($password)<4){
  21. $blad_txt.='Podaj hasło<br/>';
  22. $blad=true;
  23. }
  24.  
  25. if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $e_mail)){
  26. $blad_txt.='Podaj prawidłowy adres e-mail<br/>';
  27. $blad=true;
  28. }
  29.  
  30. if(!$blad)
  31. {
  32. //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  33. }
  34. else
  35. {
  36. //cos jest zle – wyświetlamy stosowne komunikaty
  37. echo $blad_txt;
  38. }
  39. }
  40. else
  41. {
  42. //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
  43. $login='';
  44. $password='';
  45. $e_mail='';
  46. }
  47.  
  48. echo '<fieldset>
  49. <legend>Formularz rejestracyjny nowego użytkownika serwisu</legend>
  50. <form action="logowanie.php?id=rejestracja2" method="POST">
  51. <div class="log_form">Podaj login <strong>[adres e-mail]</strong>: <input type="text" name="login" value="'.$login.'" /></div>
  52. <div class="log_form">Podaj <strong>hasło</strong>: <input type="password" name="password" value="'.$password.'" /></div>
  53. <div class="log_form">Podaj adres <strong>e-mail</strong>: <input type="text" name="e_mail" value="'.$e_mail.'" /></div>
  54. <div class="log_form">
  55. <input type="reset" name="reset" value="wyczyść" />
  56. <input type="submit" name="submit" id="submit" value="wyślij" />
  57. </div>
  58. </form>
  59.  
  60. <div class="log_form2">
  61. &sdot;
  62. <a href="java script:history.go(-1);" title="cofnij do poprzedniej strony"> Wstecz</a> -
  63. <a href="" title="zarejestruj się w bazie">Logowanie</a> -
  64. <a href="" title="przypomnij hasło">Przypomnienie hasła</a> -
  65. <a href="" title="wymuś zmianę hasła">Zmiana hasła</a> &sdot;
  66. </div>
  67.  
  68. </fieldset>';


Przy zostawieniu któregoś w pól jako puste powinien pojawić się napis z błędem a u mnie przechodzi nawet z tym. Więc może Wy, drodzy forumowicze, poradzicie mi, gdzie w tym kodzie jest błąd?
kadlub

  1. if (isset($_POST[login],$_POST[password],$_POST[e_mail])){
  2. //kod który ma sie wykonać jak wszystkie pola są wypełnione
  3. }
  4. else
  5. {
  6. //kod który ma sie wykonać jak przynajmniej jedno z pól nie jest wypełnione
  7.  
  8. }
  9.  
  10.  
andrzejlechniak
Zastosowałem, ale wciąż to samo, poza tym chyba powinno być tak:

  1. if(isset($_POST['login'],$_POST['password'],$_POST['e_mail']))
kadlub
u mnie działało bez apostrofu

do walidacji dobra jest javascript np
popatrz o jquery.validate.js
jest prosta w użyciu
andrzejlechniak
A jak to może można zmienić za pomocą samego PHP?
Mephistofeles
Cytat
do walidacji dobra jest javascript np

JS dobry? Wyłączę i już po tej walidacji. Jeśli walidacja, to tylko po stronie serwera! W przeglądarce można najwyżej podpowiedzieć użytkownikowi, że źle wpisał.
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.