Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Logowanie na stronie, weryfikacja kodu podczas rejestracji
piotrz
post 17.12.2015, 16:33:02
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


Witam, mam stronkę na której rejestracja jest dla 2 typów kont. Jedno wymaga tylko loginu, hasła i maila. Drugie oprócz tego prosi o podanie kodu weryfikującego. Kod ten sam definiuje w kodzie strony.

na localhoscie w webserv wszystko działa jak należy jednak po wrzuceniu na serwer www za każdym razem wywala mi błąd że zły kod weryfikacyjny :

kod gdzie sprawdzam czy wpisany kod jest poprawny :
  1. // Sprawdź, czy nie wystąpiły błędy
  2. if (!$login || !$email || !$pass || !$pass_v ) $errors .= '- Musisz wypełnić wszystkie pola<br />';
  3. if ($existsLogin[0] >= 1) $errors .= '- Ten login jest zajęty<br />';
  4. if ($existsEmail[0] >= 1) $errors .= '- Ten e-mail jest już używany<br />';
  5. if ($pass != $pass_v) $errors .= '- Hasła się nie zgadzają<br />';
  6. if ($kod != "111") $errors.= '- Błędny kod weryfikacyjny<br />';

tutaj samo okno gdzie wpisuje dane przy rejestracji :
  1. <br><label for="login">Login:</label>
  2. <br><input maxlength="32" type="text" name="login" id="login" /><br>
  3.  
  4. <label for="pass">Hasło:</label>
  5. <br><input maxlength="32" type="password" name="pass" id="pass" /><br>
  6.  
  7. <label for="pass_again">Powtórz:</label>
  8. <br><input maxlength="32" type="password" name="pass_v" id="pass_again" /><br>
  9.  
  10. <label for="email">Email:</label>
  11. <br><input type="text" name="email" maxlength="50" id="email" /><br>
  12.  
  13. <label for="kod">Kod weryfikacyjny:</label>
  14. <br><input type="password" name="kod" maxlength="50" id="kod" /><br>

dodam że resztę tzn weryfikacje czy hasła są takie same albo czy jest poprawny email działa ok. Po prostu za każdym razem nawet jak wpiszę ten kod 111 wywala błąd zły kod weryfikacyjny.

Pomocy smile.gif
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 16:35:13
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Nie widząc całego kodu strzelam w ciemno, że dane wysyłasz getem a próbujesz odebrać postem albo odwrotnie smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 16:42:23
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


kod odpowiadający za rejestrację :
  1. <?php
  2.  
  3. require 'header.php'; // Dołącz początkowy kod HTML
  4. require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  5. require_once 'user.class.php';
  6.  
  7. $haslo = "123";
  8.  
  9. /**
  10.  * Sprawdź czy formularz został wysłany
  11.  */
  12. if ($_POST['send'] == 1) {
  13. // Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
  14. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
  15. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  16. $pass_v = mysql_real_escape_string(htmlspecialchars($_POST['pass_v']));
  17. $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
  18.  
  19.  
  20.  
  21. /**
  22. * Sprawdź czy podany przez użytkownika email lub login już istnieje
  23. */
  24. $existsLogin = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login='$login' LIMIT 1"));
  25. $existsEmail = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE email='$email' LIMIT 1"));
  26.  
  27. $errors = ''; // Zmienna przechowująca listę błędów które wystąpiły
  28.  
  29.  
  30.  
  31. // Sprawdź, czy nie wystąpiły błędy
  32. if (!$login || !$email || !$pass || !$pass_v ) $errors .= '- Musisz wypełnić wszystkie pola<br />';
  33. if ($existsLogin[0] >= 1) $errors .= '- Ten login jest zajęty<br />';
  34. if ($existsEmail[0] >= 1) $errors .= '- Ten e-mail jest już używany<br />';
  35. if ($pass != $pass_v) $errors .= '- Hasła się nie zgadzają<br />';
  36. if ($kod != "111") $errors.= '- Błędny kod weryfikacyjny<br />';
  37.  
  38. /**
  39. * Jeśli wystąpiły jakieś błędy, to je pokaż
  40. */
  41. if ($errors != '') {
  42. echo '<p class="error">Rejestracja nie powiodła się, popraw następujące błędy:<br />'.$errors.'</p>';
  43. }
  44.  
  45. /**
  46. * Jeśli nie ma żadnych błędów - kontynuuj rejestrację
  47. */
  48. else {
  49.  
  50. // Posól i zasahuj hasło
  51. $pass = user::passSalter($pass);
  52.  
  53. // Zapisz dane do bazy
  54. mysql_query("INSERT INTO users (login, email, pass, typ) VALUES('$login','$email','$pass','Nauczyciel');") or die ('<p class="error">Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika.</p>');
  55.  
  56. echo '<p class="success">'.$login.', zostałeś zarejestrowany w serwisie. Możesz się zalogować
  57. <a href="login_nauczyciel.php">Logowanie</a></p>';
  58. }
  59. }
  60. ?>
  61. <center>
  62.  
  63. </center>
  64. <center><form method="post" action="">
  65.  
  66. <br><b><label for="typ">Konto:</label></b>
  67. <select name="typ">
  68. <option value="Nauczyciel" id="typ">Nauczyciel</option>
  69.  
  70.  
  71. </select>
  72.  
  73.  
  74.  
  75.  
  76.  
  77. <br><label for="login">Login:</label>
  78. <br><input maxlength="32" type="text" name="login" id="login" /><br>
  79.  
  80. <label for="pass">Hasło:</label>
  81. <br><input maxlength="32" type="password" name="pass" id="pass" /><br>
  82.  
  83. <label for="pass_again">Powtórz:</label>
  84. <br><input maxlength="32" type="password" name="pass_v" id="pass_again" /><br>
  85.  
  86. <label for="email">Email:</label>
  87. <br><input type="text" name="email" maxlength="50" id="email" /><br>
  88.  
  89. <label for="kod">Kod weryfikacyjny:</label>
  90. <br><input type="password" name="kod" maxlength="50" id="kod" /><br>
  91.  
  92.  
  93.  
  94. <br><Br>
  95.  
  96.  
  97.  
  98. <input type="hidden" name="send" value="1" />
  99.  
  100. <input type="submit" value="Zarejestruj" />
  101.  
  102. </form>
  103. <?
  104. if (isset($_POST['zarejestruj'])) {
  105. if ($_POST['typ'] == "Nauczyciel") {
  106. echo "Nauczyciel";
  107. }
  108. else if ($_POST['typ'] == "Uczen") {
  109. echo "Uczen";
  110. }
  111. }
  112. ?>
  113. </form>
  114. </center>
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 16:46:47
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Bazę też masz taką samą na produkcji i na localu?

//edit

rozumiem, że to tylko testowo:
  1. $haslo = "123";


Ten post edytował darko 17.12.2015, 16:48:31


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 16:57:24
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


tak baza taka sama, zresztą ten kod nie ma nic wspólnego z bazą na moje ? ma to być tylko weryfikacja w kodzie.

chodzi o wpisanie tego samego tekstu

to $haslo pozostały kod po moich różnych próbach, usunąłem.

Ten post edytował piotrz 17.12.2015, 16:58:24
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 17:06:33
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Przecież zaglądasz do bazy na początku skryptu i sprawdzasz login i email. Jeśli na localu działa a na produkcji nie, to zostaje albo remote debugging albo var_dump do linię :/


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 17:12:01
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


tzn? za bardzo nie rozumiem...
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 17:16:58
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Co to za warunek:
  1. if ($kod != "111") $errors.= '- Błędny kod weryfikacyjny<br />';

?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 17:31:26
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


no jeśli znaki wpisane w formularzu nie są równe "111" to powinien wyskoczyć błąd.

ale nawet wpisanie 111 w formularzu do rejestracji wywala błąd.
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 17:40:19
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Skąd bierze się wartość zmiennej $kod ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 17:48:40
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


zostaje wpisana przez użytkownika podczas rejestracji
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 17:52:04
Post #12





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Chodzi mi o miejsce w kodzie, w którym robisz przypisanie jakiejkolwiek wartości do tej zmiennej. Ideę rozumiem smile.gif

Czyli np nigdzie nie widzę przypisania:



Ten post edytował darko 17.12.2015, 17:55:28


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 18:01:08
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


fakt czegoś takiego nie ma ale na localu to chodziło,

w które miejsce wrzucić tą linię?
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 18:05:43
Post #14





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Tam, gdzie przypisujesz wartości do zmiennych:

  1. if ($_POST['send'] == 1) {
  2. // Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
  3. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
  4. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  5. $pass_v = mysql_real_escape_string(htmlspecialchars($_POST['pass_v']));
  6. $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
  7. // ... najlepiej tutaj


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
piotrz
post 17.12.2015, 18:17:33
Post #15





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.12.2015

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


fakty, niby banalne a w ogóle nie zwróciłem na to uwagi.

Wielkie dzięki exclamation.gif!!
Go to the top of the page
+Quote Post
Kshyhoo
post 17.12.2015, 20:51:32
Post #16





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To nie ma prawa działać. Formularz to kod w znacznikach FORM - /FORM a ja widzę tylko 2 zamknięcia forma gdzie popadnie...
Przenoszę do stosownego działu.

EDIT: nie zauważyłem otwarcia formularza, bo zginął w gąszczu znacznika CENTER...
Powód edycji: [Kshyhoo]:


--------------------
Go to the top of the page
+Quote Post
darko
post 17.12.2015, 20:55:51
Post #17





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ekhm:

  1. <form method="post" action="">


To drugie zamknięcie jest faktycznie zbędne.


--------------------
Nie pomagam na pw, tylko forum.
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 11:41