Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z rejestracja i sesjami
ArthaS_Delano
post 22.03.2008, 00:08:42
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 13.09.2007

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


Witam, robie na swojej stronce prosta rejestracje z uzyciem prostego tokena.. Niestety mam najprawdopodbniej zle skonstruowane warunki gdyz i tak nie chce mi dodac danych do bazy.. Blad pojawia sie dopiero przy sprawdzaniu poprawnosci tokena gdyz kiedy to usune to all dziala jak powinno.. Moze ktos ma pomysl na jakas lepsza modyfikacje mojego kodu ? Bylbym niesamowicie wdzieczny.. Najlepiej jak pokaze kod:

  1. <?php
  2.  require('libs/Smarty.class.php');
  3.  include('data/config.php');
  4.  $smarty = new Smarty;
  5.  
  6. $_SESSION['token'] = '';
  7. for($i=0;$i<5;$i++) {
  8.  $liczba = rand(0,9);
  9.  $_SESSION['token'] .= $liczba;
  10.  $img .= '<img src="images/token/'.$liczba.'.gif" />';
  11. }
  12.  
  13. $token = $_SESSION['token'];
  14.  
  15. if (($_POST['nick']) && ($_POST['haslo']) && ($_POST['haslo2']) && ($_POST['email']) && ($_POST['email2']) && ($_POST['token']))
  16. {
  17.  if ($_POST['haslo'] == $_POST['haslo2'])
  18.  {
  19. if ($_POST['email'] == $_POST['email2'])
  20. {
  21.  if ($token == $_POST['token']) // tu sie pojawia blad, po usunieciu tej linijki all zapisuje dobrze..
  22.  {
  23.  
  24.  $nick = $_POST['nick'];
  25.  $haslo = $_POST['haslo'];
  26.  $email = $_POST['email'];
  27.  
  28.  $db = "INSERT INTO `player` (`id`, `nick`, `haslo`, `email`) VALUES ('', '$nick', '$haslo', '$email')";
  29.  $start = mysql_query($db);
  30.  }
  31. }
  32.  }
  33. }
  34.  
  35.  $smarty -> assign('img', $img);
  36.  $smarty -> assign('error', $error);
  37.  $smarty -> display('register.tpl');
  38. ?>


Siedze nad tym caly wieczor ale pomyslalem ze poprosze o pomoc madrzejszych.. Z gory dziekuje..
Go to the top of the page
+Quote Post
nowotny
post 22.03.2008, 00:23:15
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Wyechuj sobie zmienne $_SESSION['token'] i $_POST['token'] i parę razy przeładuj stronę... od razu zauważysz co zrobiłeś źle... winksmiley.jpg
Go to the top of the page
+Quote Post
ArthaS_Delano
post 22.03.2008, 00:26:16
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 13.09.2007

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


Teoretycznie wiem bo tak jakby zapisywalo sie nastepne wywolanie tokena a porownuje do porzedniego ktory uzytkownik wpisal.. Nie wiem tylko jak rozwiazac to..
Go to the top of the page
+Quote Post
bmL
post 22.03.2008, 00:34:27
Post #4





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Najpierw sprawdź formularz a potem dopiero generuj token
  1. <?php
  2. require('libs/Smarty.class.php');
  3.  include('data/config.php');
  4.  $smarty = new Smarty;
  5.  
  6.  
  7.  
  8. $token = $_SESSION['token'];
  9.  
  10. if (($_POST['nick']) && ($_POST['haslo']) && ($_POST['haslo2']) && ($_POST['email']) && ($_POST['email2']) && ($_POST['token']))
  11. {
  12.  if ($_POST['haslo'] == $_POST['haslo2'])
  13.  {
  14. if ($_POST['email'] == $_POST['email2'])
  15. {
  16.  if ($token == $_POST['token']) // tu sie pojawia blad, po usunieciu tej linijki all zapisuje dobrze..
  17.  {
  18.  
  19.  $nick = $_POST['nick'];
  20.  $haslo = $_POST['haslo'];
  21.  $email = $_POST['email'];
  22.  
  23.  $db = "INSERT INTO `player` (`id`, `nick`, `haslo`, `email`) VALUES ('', '$nick', '$haslo', '$email')";
  24.  $start = mysql_query($db);
  25.  }
  26. }
  27.  }
  28. }
  29. $_SESSION['token'] = '';
  30. for($i=0;$i<5;$i++) {
  31.  $liczba = rand(0,9);
  32.  $_SESSION['token'] .= $liczba;
  33.  $img .= '<img src="images/token/'.$liczba.'.gif" />';
  34. }
  35.  
  36.  $smarty -> assign('img', $img);
  37.  $smarty -> assign('error', $error);
  38.  $smarty -> display('register.tpl');
  39. ?>


Jeżeli się nie mylę tongue.gif


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
ArthaS_Delano
post 22.03.2008, 00:40:26
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 13.09.2007

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


Tylko ze kod html wyglada tak i token jest akceptowany razem z reszta formularza.. To jak potem sprawdzic token ?

  1. <td width="450" align="center" valign="top" background="images/site-bg.png">
  2. <br>
  3. <center><img src="images/menu/guildinfo.png"></center>
  4. <br>
  5. <form action="index.php" method="post">
  6. <tr>
  7. <td align="left">Nick:</td><td align="right"><input type="text" name="nick" size="30"></td>
  8. </tr>
  9. <tr>
  10. <td align="left">Haslo:</td><td align="right"><input type="password" name="haslo" size="30"></td>
  11. </tr>
  12. <tr>
  13. <td align="left">Powtórz:</td><td align="right"><input type="password" name="haslo2" size="30"></td>
  14. </tr>
  15. <tr>
  16. <td align="left">E-mail:</td><td align="right"><input type="text" name="email" size="30"></td>
  17. </tr>
  18. <tr>
  19. <td align="left">Powtórz:</td><td align="right"><input type="text" name="email2" size="30"></td>
  20. </tr>
  21. <tr>
  22. <td align="left"></td><td align="right">{$img}</td>
  23. </tr>
  24. <td align="left">Przepisz:</td><td align="right"><input type="text" name="token" size="5"></td>
  25. </tr>
  26. <tr>
  27. <tr>
  28. <td align="left"></td><td align="right"><input type="submit" name="register" value="ZAREJESTRUJ"></td>
  29. </tr>
  30. </table>
  31. </form>
  32. </center>
  33. </td>
Go to the top of the page
+Quote Post
bmL
post 22.03.2008, 01:06:53
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Najlepiej zrób tak jak na początku i w formularzu dodaj pole
  1. <input type="hidden" name="token_spr" value="{token}">

I potem tylko porównaj $_POST[token] do $_POST[token_spr].
Oczywiście w kodzie php też dopisz:
  1. <?php
  2. $smarty -> assign('token', $liczba);
  3. ?>

a
  1. <?php
  2. $_SESSION['token'] .= $liczba;
  3. ?>

można wywalić smile.gif

Ten post edytował bmL 22.03.2008, 01:07:34


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
ArthaS_Delano
post 22.03.2008, 07:52:49
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 13.09.2007

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


Nie rozumie czemu mam wywalic

  1. <?
  2. $_SESSION['token'] .= $liczba;
  3. ?>


skoro to jest odpowiedzialne za ulozenie 5 cyfrowego tokena..
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: 14.08.2025 - 08:41