Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie na stronie
Forum PHP.pl > Forum > Przedszkole
piotrz
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
darko
Nie widząc całego kodu strzelam w ciemno, że dane wysyłasz getem a próbujesz odebrać postem albo odwrotnie smile.gif
piotrz
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>
darko
Bazę też masz taką samą na produkcji i na localu?

//edit

rozumiem, że to tylko testowo:
  1. $haslo = "123";
piotrz
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.
darko
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ę :/
piotrz
tzn? za bardzo nie rozumiem...
darko
Co to za warunek:
  1. if ($kod != "111") $errors.= '- Błędny kod weryfikacyjny<br />';

?
piotrz
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.
darko
Skąd bierze się wartość zmiennej $kod ?
piotrz
zostaje wpisana przez użytkownika podczas rejestracji
darko
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:

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

w które miejsce wrzucić tą linię?
darko
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
piotrz
fakty, niby banalne a w ogóle nie zwróciłem na to uwagi.

Wielkie dzięki exclamation.gif!!
Kshyhoo
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...
darko
Ekhm:

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


To drugie zamknięcie jest faktycznie zbędne.
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.