Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Token
Forum PHP.pl > Forum > Przedszkole
kezman
Cześć, piszę skrypt rejestracji, mam jednak problem z tokenem. Chciałbym, aby token to były cyfry wygenerowane przez funkcję rand. Zrobiłem takie coś, niestety cały czas po kliknięciu rejestruj pojawia się info, że kod jest nie prawidłowy. Proszę o pomoc. Pozdrawiam

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Rejestracja</title>
  6.  
  7. </head>
  8. <body>
  9.  
  10. <!-- Formularz Rejestracji -->
  11.  
  12. <table cellspacing="10">
  13.  
  14.  
  15. <form action="reg.php" method="post">
  16.  
  17. <tr><td>Login :</td> <td><input type="text" name="login" /></td></tr>
  18.  
  19. <tr><td> Hasło :</td><td><input type="password" name="haslo" /></td></tr>
  20.  
  21. <tr><td>Powtórz hasło :</td><td><input type="password" name="haslo2"  /></td></tr>
  22.  
  23. <tr><td> E-mail</td><td><input type="text" name="email"  /></td></tr><br />
  24. <tr><td> Przepisz kod : <? $token = rand(1, 1111); echo $token; ?></td><td><input type="text" name="kod"  /></td></tr><br />
  25. <tr><td><input type="submit" name="wyslij" value="Rejestruj"/>
  26. <input type="reset" name="wyczysc" value="Wyczyść"/></td></tr>
  27. </form></td>    
  28.  
  29. </table>
  30.  
  31. <!-- Koniec Formularza Rejestracji -->
  32.  
  33. <?
  34. /* Połączenie z bazą danych */
  35.  
  36. require_once('config.php');
  37.  
  38. /* Na wypadek wyłączonego parametru Register_globals */
  39.  
  40. $login=$_POST['login'];
  41. $haslo=md5($_POST['haslo']);
  42. $haslo2=md5($_POST['haslo2']);
  43. $email=$_POST['email'];
  44. $kod=$_POST['kod'];
  45. $token=$_POST['token'];
  46.  
  47. /* Zmienne */
  48.  
  49. $min = '4'; // minimalna liczba znaków
  50. $maks = '16'; // maksymalna liczba znaków
  51. $temat = 'Dziękujemy za rejestrację na strona.pl'; // temat wiadomości e-mail po rejestracji
  52. $tresc = 'Dziękujemy za rejestrację ! Zapraszamy do aktywnego uczestniczenia w życiu strony ! Pozdrawiamy, administracja'; // treść wiadomości e-mail po rejestracji
  53. $od = 'nadawca@nadawca.pl'; // nadawca wiadomości e-mail
  54.  
  55.  
  56.  
  57. /* Zapytania do bazy danych */
  58.  
  59. $reg = "INSERT INTO `uzytkownicy` (`id`, `login`, `haslo`, `email`, `data`) VALUES ('', '$login', '$haslo', '$email', NOW())"; // utworzenie konta
  60. $user = mysql_num_rows(mysql_query("SELECT `login` FROM uzytkownicy WHERE login='$login'")); // sprawdzanie czy login jest wolny
  61. $mail = mysql_num_rows(mysql_query("SELECT `email` FROM uzytkownicy WHERE email='$email'")); // sprawdzanie czy e-mail jest już zarejestrowany
  62.  
  63.  
  64.  
  65.  
  66. /* Sprawdzanie poprawności wypełnienia formularza */
  67.  
  68. if (isset($_POST['wyslij'])) {
  69. if (empty ($login) || empty ($haslo) || empty ($haslo2) || empty ($email))
  70. {
  71. die ('<font color="red"><b>Wszystkie pola muszą być wypełnione !</font></b>'); // sprawdzanie czy wszystkie pola zostały wypełnione
  72. }
  73. elseif ($haslo !=$haslo2) {
  74. die ('<font color="red"><b>Wpisane hasła nie pasują do siebie !</font></b>'); // sprawdzanie czy podane hasła są takie same
  75. }
  76. elseif (!ereg("[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+.[a-zA-Z]" , $email)) {
  77.    die ('<font color="red"><b>Adres e-mail jest nie prawidłowy !</font></b>'); // sprawdzanie poprawności adres e-mail
  78. }
  79. elseif (strlen ($login) < $min) {
  80.    die ('<font color="red"><b>Podany login jest zbyt krótki !</font></b>'); // sprawdzanie czy login nie jest za krótki
  81. }
  82. elseif (strlen ($haslo) < $min) {
  83.    die ('<font color="red"><b>Podane hasło jest zbyt krótkie !</font></b>'); // sprawdzanie czy hasło nie jest za krótkie
  84. }
  85. elseif (strlen ($login) > $maks) {
  86.    die ('<font color="red"><b>Podany login jest za długi !</font></b>'); // sprawdzanie czy login nie jest za długi
  87. }
  88. elseif ($user > 0) {
  89.    die ('<font color="red"><b>Podany login jest już zajęty !</font></b>'); // sprawdzanie czy login jest już zajęty
  90. }
  91. elseif ($mail > 0) {
  92.    die ('<font color="red"><b>Podany mail jest już zajęty !</font></b>'); // sprawdzanie czy e-mail jest już zarejestrowany
  93. }
  94. elseif ($token != $kod) {
  95.    die ('<font color="red"><b>Przepisany kod jest nie prawidłowy !</font></b>');
  96. }
  97. else {
  98.  
  99. (@mysql_query ($reg));
  100. mail("$email" , "$temat" , "$tresc" , "From: $od");
  101. echo ('<font color="green"><b>Twoje konto zostało założone ! <br />
  102. Możesz teraz się <a href="logowanie.php">zalogować</a> .</font></b>
  103. '); // zakładanie konta, wysyłanie e-mail`a po rejestracji
  104.  
  105. }
  106.  
  107. }
  108.  
  109.  
  110.  
  111. ?>
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. </body>
  124. </html>
nospor
$kod=$_POST['kod'];
$token=$_POST['token'];

Przeciez w poscie nie ma nigdzie indexu o nazwie token smile.gif porownujesz wiec $kod z niczym
kezman
Nie rozumiem. A to ?

  1. <tr><td> Przepisz kod : <? $token = rand(1, 1111); echo $token; ?></td><td><input type="text" name="kod"  /></td></tr>
nospor
weź se zrob print_r($_POST) to moze zrozumiesz. Widzisz tam gdzies 'token'? Jest tylko 'kod', bo 'kod' dales jako input. 'token' dales jako tekst na ekranie, a tekst na ekranie postem sie nie przysyla
kezman
OK, wiem o co Ci chodzi, możesz jednak podać przykład, ponieważ nie wiem za bardzo jak to dokładnie zrobić.
nospor
jak chcesz zeby token przeslal ci sie postem, to musisz wstawic go do pola formularza, np do pola ukrytego.

Nie ma to jednak wiekszego sensu, bo kazdy moze to podejrzec. Najlepiej, jak zapiszesz po wygenerowaniu token do sesji i to co koles wpisze porownasz z tym co jest w sesji
kezman
Czytam o tych sesjach i za bardzo nie rozumiem. Możesz mi powiedzieć jak umieścić kod w sesji i potem go odczytać ?
erix
http://pl.php.net/manual/en/session.examples.php
http://www.google.com/search?client=opera&...-8&oe=utf-8

Nawet nie chce się zajrzeć do manuala, wpisać w Google PHP sesje.

Poza tym, podobny temat już był: http://forum.php.pl/index.php?showtopic=108988

Zamykam.
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.