Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem ze skryptem rejestracji
--Major--
post
Post #1





Goście







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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Pomożecie?
Go to the top of the page
+Quote Post
--Major--
post
Post #2





Goście







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.
Go to the top of the page
+Quote Post
deadwheel
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 2
Dołączył: 8.11.2011

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


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) Podalem ci tylko wskazowki . Jezeli masz jeszcze jakies pytania pisz .

Pozdro

PS: Sprawdz jaka wersje masz php za pomoca phpinfo();

Ten post edytował deadwheel 3.09.2012, 21:19:18
Go to the top of the page
+Quote Post
olszam
post
Post #4





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


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ą (IMG:style_emoticons/default/tongue.gif) ).
Go to the top of the page
+Quote Post
--Major--
post
Post #5





Goście







Dzięki wielkie za naprowadzenie (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)

Jeszcze raz dzięki.
Pozdro.
Go to the top of the page
+Quote Post
--Major--
post
Post #6





Goście







@olszam

Ten kod napisałem "z głowy" (IMG:style_emoticons/default/smile.gif) Oczywiście z niewielką pomocą kursów lub wcześniejszych prób w celu sprawdzenia składni lub czegoś w tym rodzaju (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
olszam
post
Post #7





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


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" (IMG:style_emoticons/default/tongue.gif) , ile to ja takich wpadek miałem.
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 - 13:28