Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] walidacja pól
krystian1991x
post
Post #1





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


Witam mam pytanie jak inaczej czyli prościej zrobić walidacje która sprawdza czy pola formularza zostały wszystkie wypełnione ja zrobiłem coś takiego ale niezbyt mi to odpowiada

  1.  
  2. if($_POST['login'] == ""|| $_POST['login2'] == "" || $_POST['login3'] == "" || $_POST['login4'] == "") {
  3.  
  4.  
  5.  
  6.  
  7. }else {
  8.  
  9. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Zrób tablicę z kluczami, które chcesz sprawdzić potem przeleć foreach + isset ew. empty

Ten post edytował fifi209 18.09.2010, 12:24:00
Go to the top of the page
+Quote Post
krystian1991x
post
Post #3





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


jakiś przykład ? (IMG:style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
Ramzaa
post
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

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


Cytat(krystian1991x @ 18.09.2010, 13:32:45 ) *
jakiś przykład ? (IMG:style_emoticons/default/snitch.gif)

if (isset($_POST['cos'])) { }
Go to the top of the page
+Quote Post
krystian1991x
post
Post #5





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


raczej chodziło mi o to jak stworzyć te tablice z kluczem ;P

Zdecydowałem że jednak zrobię sobie to tak ale ta konstrukcja nie wiedzieć czemu nie jest prawidłowa


Ten post edytował krystian1991x 18.09.2010, 13:31:51
Go to the top of the page
+Quote Post
krispak
post
Post #6





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


Cytat
Zdecydowałem że jednak zrobię sobie to tak ale ta konstrukcja nie wiedzieć czemu nie jest prawidłowa

Tzn jak bo nie wiem, o ktora konstrukcje chodzi?
Go to the top of the page
+Quote Post
krystian1991x
post
Post #7





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


  1. <?php
  2.  
  3. require('libs/Smarty.class.php');
  4. require('cfg.php');
  5.  
  6. $smarty = new Smarty;
  7.  
  8. $login = htmlspecialchars(mysql_escape_string($_POST['login']));
  9. $name = htmlspecialchars(mysql_escape_string($_POST['name']));
  10. $last_name = htmlspecialchars(mysql_escape_string($_POST['last_name']));
  11. $password1 = htmlspecialchars(mysql_escape_string($_POST['pw1']));
  12. $password2 = htmlspecialchars(mysql_escape_string($_POST['pw2']));
  13. $email1 = htmlspecialchars(mysql_escape_string($_POST['email1']));
  14. $email2 = htmlspecialchars(mysql_escape_string($_POST['email2']));
  15. $phone1 = htmlspecialchars(mysql_escape_string($_POST['phone1']));
  16. $phone2 = htmlspecialchars(mysql_escape_string($_POST['phone2']));
  17.  
  18. if(isset($_POST['register'])) {
  19.  
  20. if(!empty($_POST['login'])) { if(!empty($_POST['name'])) {
  21. if(!empty($_POST['last_name'])) { if(!empty($_POST['pw1'])) {
  22. if(!empty($_POST['pw2'])) { if(!empty($_POST['email1'])) {
  23. if(!empty($_POST['email2'])) { if(!empty($_POST['phone1'])) {
  24. if(!empty($_POST['phone2'])) { if(empty($_POST['adres'])) {
  25.  
  26. if(preg_match('#^[A-Za-z0-9_-]+$#', $login) && strlen($login) > 5 || strlen($login) < 17 ) {
  27. if(preg_match('#^[A-Za-z_-]+$#', $name) && strlen($name) > 3 || strlen($name) < 17) {
  28. if(preg_match('#^[A-Za-z_-]+$#', $last_name) && strlen($last_name) > 3 || strlen($last_name) < 32) {
  29. if(preg_match('#^[A-Za-z0-9_-]+$#', $pw1) && strlen($pw1) > 5 || strlen($pw1) < 17 ) {
  30. if(preg_match('#^[A-Za-z0-9_-]+$#', $pw2)) {
  31. if(preg_match('#^[+0-9_-]+$#', $phone1) && strlen($phone1) == 9) {
  32. if(preg_match('#^[+0-9_-]+$#', $phone2) && strlen($phone1) > 8 || strlen($phone1) < 12) {
  33.  
  34. echo "Teoretycznie dziala";
  35.  
  36. } else{ echo "Numer telefonu stacjonarnego nie jest poprawny";}
  37. } else{ echo "numer telefonu komórkowego nie jest poprawny";}
  38. } else{ echo "Haslo nie jest poprawne";}
  39. } else{ echo "Haslo nie jest poprawne";}
  40. } else{ echo "Nazwisko nie jest poprawne";}
  41. } else{ echo "Imie nie jest poprawne";}
  42. } else{ echo "login nie jest poprawny";}
  43.  
  44.  
  45. } else { echo "Podaj adres"; } } else { echo "Podaj telefon stacjonarny"; }
  46. } else { echo "Podaj telefon"; } } else { echo "Powtórz email"; }
  47. } else { echo "Podaj email"; } } else { echo "Powtórz haslo"; }
  48. } else { echo "Podaj haslo"; } } else { echo "Podaj nazwisko"; }
  49. } else { echo "Podaj imie"; } } else { echo "Podaj login"; }
  50.  
  51. }
  52.  
  53. $smarty->assign('login', $login);
  54. $smarty->assign('name', $name);
  55. $smarty->assign('last_name', $last_name);
  56. $smarty->assign('password1', $password1);
  57. $smarty->assign('password2', $password2);
  58. $smarty->assign('email1', $email1);
  59. $smarty->assign('email2', $email2);
  60. $smarty->assign('phone1', $phone1);
  61. $smarty->assign('phone2', $phone2);
  62.  
  63. $smarty->display('register.tpl');
  64.  
  65. ?>
jak do tej pory tak u mnie to wygląda jak to zrobię to będę myślał czy da się łatwiej i jak Bo mi nic innego do głowy nie przychodziło
Go to the top of the page
+Quote Post
Wicepsik
post
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


1. Po co używasz funkcji mysql_escape_string, htmlspecialchars jak i tak potem sprawdzasz zmienne wyrażeniami regularnymi ?
2. Sprawdzenie długości znaków możesz załatwić na poziomie wyrażeń regularnych: http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych

Ten post edytował Wicepsik 18.09.2010, 15:29:08
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Bardziej chodziło mi o coś takiego:

  1. $klucze = array('login', 'password', 'last_name', 'pw');
  2.  
  3. foreach ($_POST as $key => $value) {
  4. if (in_array($key, $klucze)) {
  5. if (empty($value)) {
  6. die('Wypełnij wszystkie pola!');
  7. }
  8. }
  9. }


Zamiast wyrażeń w wielu przypadkach możesz użyć: ctype_ lub filter_var

Ale trzymając się pierwszej koncepcji możesz zrobić np.
  1. $keys = array('login' => '#^[\w\d]{5,20}$#', 'password' => '#^[\w\d]{5,20}$#');
  2.  
  3. foreach ($_POST as $key => $value) {
  4. if (array_key_exists($key, $keys)) {
  5. if (!preg_match($keys[$key], $value)) {
  6. die('Coś poszło nie tak');
  7. }
  8. }
  9. }


Albo dodatkowo rozbudować o błędy:
  1. $keys = array('login' => array('reg' => '#^[\w\d]{5,20}$#', 'err' => 'Login zawiera niedozwolone znaki!'), 'password' => array('reg' => '#^[\w\d]{5,20}$#', 'err' => 'Hasło zawiera niedozwolone znaki'));
  2.  
  3. foreach ($_POST as $key => $value) {
  4. if (array_key_exists($key, $keys)) {
  5. if (!preg_match($keys[$key]['reg'], $value)) {
  6. die($keys[$key]['err']);
  7. }
  8. }
  9. }


Wszystko pisane z palca, nie testowałem.

Ten post edytował fifi209 18.09.2010, 15:49:41
Go to the top of the page
+Quote Post
krystian1991x
post
Post #10





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


wytłumaczy mi ktoś ten zapis ?

  1. '#^[\w\d]{5,20}$#'

Go to the top of the page
+Quote Post
Fifi209
post
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


http://pl.php.net/manual/pl/regexp.reference.delimiters.php

http://pl.php.net/manual/pl/regexp.reference.backslash.php

Ogólnie poczytaj sobie:
http://pl.php.net/manual/pl/reference.pcre...tern.syntax.php
Go to the top of the page
+Quote Post
krystian1991x
post
Post #12





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


oh nie prosiłem o linki bo to sobie umiem wyszukać ... od tego mamy google ! a forum chyba służy do czegoś innego ? szkoda że niektórzy mylą wyszukiwarki z forami ...
Go to the top of the page
+Quote Post
Fifi209
post
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Skoro potrafisz sobie sam wyszukać to po co na forum zadajesz takie pytania?

Jakiś większy problem, że to jest po angielsku? Trudno, taka praca programisty.
Go to the top of the page
+Quote Post
krystian1991x
post
Post #14





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


Wujek ! ty se uważaj (IMG:style_emoticons/default/haha.gif) Po co zadaje na forum ? bo od tego ono jest nie wiem po co było zakładane forum mogli po prostu zrobić przekierowanie do manuala (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #15





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


\w
Cytat
any "word" character


\d
Cytat
any decimal digit


# #
Cytat
When using the PCRE functions, it is required that the pattern is enclosed by delimiters. A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.

Often used delimiters are forward slashes (/), hash signs (#) and tildes (~). The following are all examples of valid delimited patterns.


^ $

{1,3}
Zapis taki oznacza: minimum jeden znak, maksimum trzy znaki.
Go to the top of the page
+Quote Post
krystian1991x
post
Post #16





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 7.08.2010

Ostrzeżenie: (10%)
X----


da się w zakresie tej tablicy jeszcze sprawdzić takie rzeczy jak czy login jest zajęty oraz czy pola z haslami sie zgadzają ?

a i gdzie mam teraz umieścić zapytanie ?
  1. foreach ($_POST as $key => $value) {
  2. if (array_key_exists($key, $keys)) {
  3. if (!preg_match($keys[$key]['reg'], $value)) {
  4. $error = $keys[$key]['err'];
  5. }
  6. }
  7. }

utworzyć else dla tego warunku ?

  1. if (!preg_match($keys[$key]['reg'], $value)) {
  2. $error = $keys[$key]['err'];
  3. }
Go to the top of the page
+Quote Post
Fifi209
post
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Ja to podsunąłem jako pomysł do sprawdzania czy pole jest puste, ew. czy zawiera dozwolone znaki.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 12:35