Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze skryptem rejestracji
Forum PHP.pl > Forum > Przedszkole
-Major-
Witam. Postanowiłem sprawdzić swoje siły przy skrypcie rejestracji.

Otóż moje postanowienia są takie:
4 pola:
- Login
- Hasło
- Powtórz hasło
- Email

*Sprawdzanie czy pola nie są puste. (działa)

*Sprawdzanie czy hasła są identyczne. (działa)

*W przypadku poprawnej rejestracji wyświetla "Zarejestrowano poprawnie" nad formularzem. (nie działa)

*W przypadku niepowodzenia wyświetla "Błąd. Proszę spróbować za kilka sekund" nad formularzem. (nie działa)

*No i oczywiście jeżeli wszystkie pola są wypełnione dodaj rekordy do bazy. (nie działa)

Szyfrowanie hasła dodam później smile.gif Tak samo sprawdzanie czy login i hasło już istnieje w bazie.

Kod rejestracji:

  1. <?php
  2.  
  3. include('../conf.php');
  4.  
  5. $login = $_POST['login'];
  6. $haslo = $_POST['haslo'];
  7. $haslo2 = $_POST['haslo2'];
  8. $email = $_POST['email'];
  9. $dodaj = $_POST['dodaj'];
  10. $zero = "";
  11. $jeden = "1";
  12.  
  13. if ($dodaj === $jeden) {
  14.  
  15. if ($login === $zero) {
  16. $no_login = '<font color="red">Podaj login!</font>';
  17. }
  18.  
  19. if ($haslo === $zero) {
  20. $no_haslo = '<font color="red">Podaj Hasło!</font>';
  21. }
  22.  
  23. if ($email === $zero) {
  24. $no_email = '<font color="red">Podaj Email!</font>';
  25. }
  26.  
  27. if ($haslo !== ($haslo2)) {
  28. $rozne = '<font color="red">Hasła się różnią!</font>';
  29. }
  30.  
  31. if ($login !== $zero && $haslo !== $zero && $email !== $zero) {
  32. $zapytanie = "INSERT INTO `users` (`user_id`, `login`, `haslo`, `email`) VALUES ('', '$login', '$haslo', '$email')";
  33. $idzapytania = mysql_query($zapytanie);
  34. }
  35.  
  36. if ($idzapytania) {
  37. $dodano = '<font color="green">Zarejestrowano poprawnie!</font>';
  38. }
  39. else {
  40. if (!isset($no_login) && ($no_haslo) && ($no_email)) {
  41. $nie_dodano = '<font color="red">Błąd! Spróbuj ponownie za kilka sekund :)';
  42. }
  43. }
  44. }
  45. ?>
  46. <!--/////////////////////////////////////////////////////////-->
  47. <table>
  48. <form action="register.php" method="post">
  49. <tr>
  50. <td>
  51. <?php
  52. if (isset($dodano)) {
  53. echo $dodano;
  54. }
  55.  
  56. if (isset($nie_dodano)) {
  57. echo $nie_dodano;
  58. }
  59. ?>
  60. </td>
  61. </tr>
  62. <tr>
  63. <td>
  64. LOGIN:
  65. </td>
  66. <td>
  67. <input type="text" name="login" />
  68. </td>
  69. <?php
  70. if (isset($no_login)) {
  71. echo '<td>';
  72. echo $no_login;
  73. echo '</td>';
  74. }
  75.  
  76. ?>
  77. </tr>
  78. <!--////////////////////////////////////////////////////////-->
  79. <tr>
  80. <td>
  81. HASŁO:
  82. </td>
  83. <td>
  84. <input type="password" name="haslo" />
  85. </td>
  86. <?php
  87. if (isset($no_haslo)) {
  88. echo '<td>';
  89. echo $no_haslo;
  90. echo '</td>';
  91. }
  92.  
  93. if (isset($rozne)) {
  94. echo '<td>';
  95. echo $rozne;
  96. echo '</td>';
  97. }
  98. ?>
  99. </tr>
  100. <!--/////////////////////////////////////////////////////////-->
  101. <tr>
  102. <td>
  103. POWTÓRZ HASŁO:
  104. </td>
  105. <td>
  106. <input type="password" name="haslo2" />
  107. </td>
  108. </tr>
  109. <!--/////////////////////////////////////////////////////////-->
  110. <tr>
  111. <td>
  112. EMAIL:
  113. </td>
  114. <td>
  115. <input type="text" name="email" />
  116. <input type="hidden" name="dodaj" value="1" />
  117. </td>
  118. <?php
  119. if (isset($no_email)) {
  120. echo '<td>';
  121. echo $no_email;
  122. echo '</td>';
  123. }
  124. ?>
  125. </tr>
  126. <tr><td><button type="submit">Rejestruj</button></td></tr>
  127. </form>
  128. </table>


Podejrzewam że mam pomieszaną kolejność IF'ów i coś się żre z czymś, jednak nie mogę rozwikłać co takiego smile.gif
Pomożecie?
-Major-
EDIT:

Doszedłem do przyczyny (być może)

W kodzie jest tak: Jeżeli zmienne login, haslo i email nie są puste to zapisuje rekordy do bazy...

Jednak sprawdziłem połączenie z bazą i mam błąd:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Nie korzystam przy połączeniu z "localhost" tylko z "mysql3.ph-hos.osemka.pl" (baza na darmowym hostingu friko.pl)

Użytkownik i hasło do bazy sprawdzone 100 razy.
deadwheel
Czytales cos o operatorze "===" ? Prawda jeśli $a jest równe $b i są tego samego typu. (tylko PHP4) . Stosuj tylko == . Nie kapuje po co ci pusta zmienna . Mozeesz poprostu porwnac do zera NULL czy cos ala smile.gif .

Tutaj
  1. if (!isset($no_login) && ($no_haslo) && ($no_email))


isset tylko sie tyczy do no_login . W pierwszym zapytaniu daj sobie poprostu czy istnieje $dodaj smile.gif . Glowny problem to pewnie jest to ze uzywasz PHP 5 a te tutaj operatory sa na PHP 4 .

Gotowego kodu ci nie podam smile.gif Podalem ci tylko wskazowki . Jezeli masz jeszcze jakies pytania pisz .

Pozdro

PS: Sprawdz jaka wersje masz php za pomoca phpinfo();
olszam
Ja się zastanawiam czy dałoby się uprościć tą rejestrację ze sprawdzaniem i nie lepiej byłoby pisać po if jeszcze elseif albo else jakby coś się źle zrobiło to wtedy można łatwiej wyczaić gdzie się popełniło błąd, mnie nie raz uratowało to że dopisywałem else do warunku jak coś było w do zrobienia, no i szybciej szło poprawianie. Jak jesteś początkujący i uczysz się dopiero php z kursu to sprawdź czy kurs jest dokładnie pod php5, jak wspomniał deadwheel o operatorach pod php4 to zastanawiam się,czy przerabia przestarzały kursu php(choć niewiele się różni ale różnice są tongue.gif ).
-Major-
Dzięki wielkie za naprowadzenie smile.gif Napisałem od nowa połączenie z bazą, zmieniłem to co poradziłeś i poprawiłem jeszcze:

  1. if (!empty ($login) && ($haslo) && ($email)) {
  2. if ($haslo == $haslo2) {
  3. $zapytanie = "INSERT INTO `users` (`id`, `login`, `haslo`, `email`) VALUES ('', '$login', '$haslo', '$email')";
  4. $idzapytania = mysql_query($zapytanie);
  5. }
  6. }

Ponieważ przed dodaniem rekordów nie sprawdzał czy hasła są takie same i dodawał nie zważywszy na to a jednocześnie wyświetlał że hasła są różne smile.gif

Jeszcze raz dzięki.
Pozdro.
-Major-
@olszam

Ten kod napisałem "z głowy" smile.gif Oczywiście z niewielką pomocą kursów lub wcześniejszych prób w celu sprawdzenia składni lub czegoś w tym rodzaju tongue.gif Jak każdy początkujący popełniam błędy, i jak to się mówi: "Człowiek uczy się na błędach", wychodzi na to że ja uczę się bardzo dużo ;D
olszam
spoko spoko każdemu się zdarza, nie każdy jest alfą i omegą. Czasem bardzo proste rzeczy mogą nam zawracać głowę i zastanawiamy się "czemu nie działa, co ja źle zrobiłem" tongue.gif, ile to ja takich wpadek miałem.
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.