Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP] Token
kezman
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 1.12.2008

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


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>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$kod=$_POST['kod'];
$token=$_POST['token'];

Przeciez w poscie nie ma nigdzie indexu o nazwie token (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) porownujesz wiec $kod z niczym
Go to the top of the page
+Quote Post
kezman
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 1.12.2008

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


Nie rozumiem. A to ?

  1. <tr><td> Przepisz kod : <? $token = rand(1, 1111); echo $token; ?></td><td><input type="text" name="kod"  /></td></tr>
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
kezman
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 1.12.2008

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


OK, wiem o co Ci chodzi, możesz jednak podać przykład, ponieważ nie wiem za bardzo jak to dokładnie zrobić.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 1.12.2008

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


Czytam o tych sesjach i za bardzo nie rozumiem. Możesz mi powiedzieć jak umieścić kod w sesji i potem go odczytać ?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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

Closed 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 - 20:27