Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne
akurczyk
post
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


Utworzyłem formularz rejestracyjny który sprawdza czy podane dane pasują do wzorca, jednak pomimo podania poprawnych danych pierwszy preg_match() zwraca FALSE.

  1. <?php
  2. mysql_connect("localhost", "root", "vertrigo");
  3. mysql_select_db("porady");
  4. mysql_query("SET NAMES 'utf8'");
  5. $wykonaj_zapytanie_login = mysql_query("SELECT * FROM uzytkownicy WHERE login='".addslashes(trim($_POST['login']))."'");
  6. $wykonaj_zapytanie_email = mysql_query("SELECT * FROM uzytkownicy WHERE email='".addslashes(trim($_POST['email']))."'");
  7. if(!isset($_POST['rejestruj'])) {
  8.    echo "<form method=\"post\">";
  9.    echo "<table align=\"center\">";
  10.    echo "<tr>";
  11.    echo "<td align=\"right\">";
  12.    echo "Logi:";
  13.    echo "</td>";
  14.    echo "<td>";
  15.    echo "<input type=\"text\" name=\"login\" maxlenght=\"30\" size=\"30\">";
  16.    echo "</td>";
  17.    echo "</tr>";
  18.    echo "<tr>";
  19.    echo "<td align=\"right\">";
  20.    echo "Hasło:";
  21.    echo "</td>";
  22.    echo "<td>";
  23.    echo "<input type=\"password\" name=\"haslo\" maxlenght=\"30\" size=\"30\">";
  24.    echo "</td>";
  25.    echo "</tr>";
  26.    echo "<tr>";
  27.    echo "<td align=\"right\">";
  28.    echo "Powtórz hasło:";
  29.    echo "</td>";
  30.    echo "<td>";
  31.    echo "<input type=\"password\" name=\"powtorz_haslo\" maxlenght=\"30\" size=\"30\">";
  32.    echo "</td>";
  33.    echo "</tr>";
  34.    echo "<tr>";
  35.    echo "<td align=\"right\">";
  36.    echo "E-mail:";
  37.    echo "</td>";
  38.    echo "<td>";
  39.    echo "<input type=\"text\" name=\"email\" maxlenght=\"50\" size=\"50\">";
  40.    echo "</td>";
  41.    echo "</tr>";
  42.    echo "<tr>";
  43.    echo "<td>";
  44.    echo "</td>";
  45.    echo "<td>";
  46.    echo "<input type=\"submit\" name=\"rejestruj\" value=\"Rejestruj\">";
  47.    echo "</td>";
  48.    echo "</tr>";
  49.    echo "</table>";
  50.    echo "</form>";
  51. } elseif(empty($_POST['login']) || empty($_POST['haslo']) || empty($_POST['powtorz_haslo']) || empty($_POST['email'])) {
  52.    echo "Wszystkie pola muszę być wypełnione!";
  53. } elseif(strlen($_POST['login']) < 3) {
  54.    echo "Podany login jest za krótki!";
  55. } elseif(!preg_match("/^[a-z0-9]$/D", $_POST['login'])) {
  56.    echo "Podany login zawiera niedozwolone znaki!";
  57. } elseif(mysql_num_rows($wykonaj_zapytanie_login) !== 0) {
  58.    echo "Podany login jest już używany!";
  59. } elseif(!preg_match("/^[a-z0-9]$/D", $_POST['haslo'])) {
  60.    echo "Podane hasło zawiera niedozwolone znaki!";
  61. } elseif($_POST['haslo'] !== $_POST['powtorz_haslo']) {
  62.    echo "Pola hasło i powtórz hasło różnią się!";
  63. } elseif(!preg_match("/^[a-zA-Z0-9.-_]+@[a-zA-Z0-9.-_]+.[a-z]{2,4}$/D", $_POST['email'])) {
  64.    echo "Podany adres e-mail jest w nieprawidłowy!";
  65. } elseif(mysql_num_rows($wykonaj_zapytanie_email) !== 0) {
  66.    echo "Podany adres e-mail jest już używany!";
  67. } else {
  68.    mysql_query("INSERT INTO uzytkownicy (id, administrator, login, haslo, email) VALUE (NULL, 'nie',  '".addslashes(trim($_POST['login']))."', '".addslashes(trim($_POST['haslo']))."', '".addslashes(trim($_POST['email']))."')");
  69.    echo "Rejestracja została zakończona powodzeniem!";
  70. }
  71.  
  72. ?>


Proszę o pomoc


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
delfinium
post
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


Podaj jaki login podajesz bo tak to ciężko cokolwiek powiedzieć, z wyrażenia wynika, że dozwolone są jedynie małe litery + cyfry.
Go to the top of the page
+Quote Post
akurczyk
post
Post #3





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


akurczyk


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
delfinium
post
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


Taki login powinien przejść. To spróbujmy inną drogą:
1. sprawdź co naprawdę zawiera zmienna $_POST['login'], nóż widelec jest tam coś jeszcze innego, jakaś spacja albo biały znak
2. zamień wyrażenie na
  1. <?php
  2. preg_match("/^[a-z0-9]$/is", $_POST['login'])
  3. ?>
, może to pomoże
Go to the top of the page
+Quote Post
akurczyk
post
Post #5





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


dalej nie działa


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
delfinium
post
Post #6





Grupa: Zarejestrowani
Postów: 90
Pomógł: 6
Dołączył: 30.06.2007
Skąd: Zielona Góra

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


ok, moja wina, pominąłem fakt, że mają być tylko małe litery

spróbuj

  1. <?php
  2. preg_match("/^[0-9a-z]*$/s", $_POST['login'] );
  3. ?>


Ja wpisałem kilka testowych wartości i zdaje się działać.
Go to the top of the page
+Quote Post
VGT
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


we wcześniejszych wersjach błąd polegał na tym, ze pattern pasował tylko do jednoznakowego loginu.
W ostatniej wersji jedynie, zamiast "*", dałbym "+", ewentualnie np {3,}, aby okreslic minimalna ilość znaków dla loginu

***EDIT
Widze, ze dlugosc sprawdzasz osobno, wiec druga linijka mojego postu jest niewazna winksmiley.jpg

Ten post edytował Bonastick 21.09.2008, 11:45:51
Go to the top of the page
+Quote Post
akurczyk
post
Post #8





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

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


to co mam zrobić?questionmark.gifquestionmark.gif?


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
zimi
post
Post #9





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


Cytat
Ja wpisałem kilka testowych wartości i zdaje się działać.

Cytat
we wcześniejszych wersjach błąd polegał na tym, ze pattern pasował tylko do jednoznakowego loginu.

dopisz ten + lub * tak jak pokazał @delfinum i nie ma prawa nie działać...
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: 21.08.2025 - 11:26