Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie danych użytkownika
Forum PHP.pl > Forum > PHP
darophp
Gdzie robię błąd ?
  1. if ($register=="check") {
  2.  
  3. /**************************************************/
  4. /* sprawdzenie danych i dodanie uzytkownika */
  5. /**************************************************/
  6.  
  7. $id = htmlspecialchars(stripslashes(trim($_POST["id"])), ENT_QUOTES);
  8. $login = htmlspecialchars(stripslashes(trim($_POST["login"])), ENT_QUOTES);
  9. $password = htmlspecialchars(stripslashes(trim($_POST["password"])), ENT_QUOTES);
  10. $email = htmlspecialchars(stripslashes(trim($_POST["email"])), ENT_QUOTES);
  11. $phone = htmlspecialchars(stripslashes(trim($_POST["phone"])), ENT_QUOTES);
  12. $first_name = htmlspecialchars(stripslashes(trim($_POST["first_name"])), ENT_QUOTES);
  13. $last_name = htmlspecialchars(stripslashes(trim($_POST["last_name"])), ENT_QUOTES);
  14. $street = htmlspecialchars(stripslashes(trim($_POST["street"])), ENT_QUOTES);
  15. $number = htmlspecialchars(stripslashes(trim($_POST["number"])), ENT_QUOTES);
  16. $zip_code = htmlspecialchars(stripslashes(trim($_POST["zip_code"])), ENT_QUOTES);
  17. $city = htmlspecialchars(stripslashes(trim($_POST["city"])), ENT_QUOTES);
  18.  
  19. if (strlen($login)<3 or strlen($login)>32
  20. or !eregi("^[a-zA-Z0-9_.]+$",$login)) { $blad++;
  21. echo "<span style=\"color:red;\">Login musi mieć od 3 do 32 znaków bez polskich liter i spacji!</span><br />";
  22. } else {
  23. $wynik= mysql_query("SELECT * FROM users WHERE login='$login'");
  24. if (mysql_num_rows($wynik)<>0) { $blad++;
  25. echo "<span style=\"color:red;\">Login już został przez kogoś użyty !. Zaproponuj inny!</span><br />";
  26. }
  27. }
  28.  
  29. if (strlen($password)<6 or strlen($password)>50
  30. or !eregi("^[a-zA-Z0-9]+$",$password)) { $blad++;
  31. echo "<span style=\"color:red;\">Hasło musi mieć od 6 do 32 znaków bez polskich liter i spacji!</span><br />";
  32. }
  33.  
  34. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email)) { $blad++;
  35. echo "<span style=\"color:red;\">E-mail nie został podany prawidłowo!</span><br />";
  36. }
  37.  
  38. if ($blad=="0") {
  39. $code = uniqid(rand());
  40. $password_ins = md5($password);
  41. $wynik = mysql_query("INSERT INTO $mysql_tabela VALUES('$login', '$password_ins', '$code', 1, NOW(), '$email', '$phone', '$first_name', '$last_name', '$street', '$number', '$zip_code', '$city')");
  42. if ($wynik) {
  43. $list="
  44. Aby potwierdzić rejestracje kliknij w ciągu 48 godzin na adres:
  45. strona.pl/index.php?register=confirm&code=$code
  46. Jeżeli nie chcesz się rejestrować, zignoruj ten list.
  47. ";
  48. $twoj_adres = "darex@poczta.pl";
  49. mail($email, "Rejestracja", $list, "From: <$twoj_adres>");
  50. echo "<p>Aby dokończyć proces rejestracji odbierz e-mail</p>";
  51. }
  52. } else $page="register";
  53.  
  54. }
  55.  
  56. if ($page=="register") {
  57.  
  58. echo <<<KONIEC
  59. <form action="/index.php?page=register" method="post">
  60. <input type="hidden" name="register" value="check" />
  61. <table style="padding: 10px; padding-top: 5px;" >
  62.   <tr>
  63.   <td><p>Login: </p></td>
  64.   <td><input type="text" name="login" value="$login" /></td>
  65.   </tr>
  66.   <tr>
  67.   <td><p>Hasło: </p></td>
  68.   <td><input type="password" name="password" value="$password" /></td>
  69.   </tr>
  70. <p>...</p>
  71. <tr>
  72.   <td><br/><input type="submit" value="Zarejestruj się!" /></td>
  73. </tr>
  74. </table>
  75. </form>
  76. KONIEC;
  77. }


Gdy wpisze dane w formularzu jest ok nie wyskakują błędne komunikaty że nie poprawny login lub coś innego, ale nie przekierowuje mnie do dalszej strony gdzie pisze ze trzeba odebrać emaila .. (ten dalszy kod nie wstawiony)

Nie mam sił ...
everth
Prawdopodobnie w implementacji.
darophp
a możesz wyoślić ... o co dokładniej chodzi

nie ma przecież nałożonych filtrów
everth
Rzuciłem okiem na pierwsze linijki i dałem ci link do manuala dzięki któremu powinieneś to zrobić w miarę po ludzku (i z mniejszym prawdopodobieństwem błędu). No chyba że znajdziesz kogoś kto za ciebie zanalizuje ten kod i poda rozwiązanie, ja nie mam wystarczających umiejętności niestety.
darophp
No to może się ktos taki znajdzie bo siedzę na tym parę dobrych godzin ...

Bardzo potzrbuję, żeby działał mi ten skrypt. Mogę prosić o pomoc winksmiley.jpg questionmark.gif
Wicepsik
  1. $wynik = mysql_query("INSERT INTO $mysql_tabela VALUES('$login', '$password_ins', '$code', 1, NOW(), '$email', '$phone', '$first_name', '$last_name', '$street', '$number', '$zip_code', '$city')") or die(mysql_error());
dodaj mysql_error do tej linijki tak jak ci pokazalem
darophp
Dalej się nic nie zmieniło, sprawdzałem na połączenie z bazą .. ale jest. Jakieś pomysły ?


Stanęło w miejscu, jest jak było. dry.gif
thek
Poprawiłem Ci z CODE na PHP... Patrz jaki od razu kwiatek wyszedł ze złym użyciem apostrofów, a ściślej ich nie escape'owaniem. Linia 45 i dalsze musisz sprawdzić bo Ci krecią robotę robi. Teraz widzisz czemu nikt do tej pory tego prostego błedu nie zauważył. Używaj poprawnych znaczników jak [ php ] czy [ html ] a nie [ code ] bo tylko utrudniasz sam sobie pomoc (oczywiście bez spacji mają być w środku znaczniki)
darophp
W składni nie ma problemu, bo to właśnie BBCode utworzył sobie linka, i psuje zamieszczony kod ;P
wacko.gif wacko.gif wacko.gif
thek
W takim razie masz byka jeśli chodzi o zmienną $blad. Lepiej sprawdź ją i IF ją obsługujący smile.gif
darophp
Usunąłem cudzysłowy $blad==0 (zanim zakładałem temat też ich nie było (chyba dlatego ze jest mysql error)) i nareszcie jest jakiś błąd:
Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES('darex', 'f3b5ad382791fd0c57a26b194d0e8e4c', '7434711574c595222ee9a3', 1,' at line 1


No i ten błąd Column count doesn't match value count at row 1 ale zaraz sprawdze czy nie za mało kolumn ..
thek
Skoro tam, to sobie wyechuj całe zapytanie lub chociaż zmienną $mysql_tabela bo na nią wskazuje błąd. Może jest pusta?
darophp
Jest udało się ... zapomniałem wstawić $id = mysql_insert_id(); i dopisać w zapytaniu '$id'.
No i narescie wyskoczył komunikat zeby odebrać emaila, a email odszedł. Dziękuje za pomoc winksmiley.jpg
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.