Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 ? 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 ? 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?


--------------------
* * * * * * * * * * * * * * * * * * * * * * * * *
PHP, Laravel, Docker, Docker Compose, Laradock, Redis, JS, React, Vue, CSS, SCSS, Gulp, GIT ... itd..
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual 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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 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 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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 Aktualny czas: 19.08.2025 - 05:40