Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z tokenem i sesją
dnn9
post 1.04.2016, 11:23:50
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.04.2016

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


Witam, posiadam problem z tokenem zabezpieczającym przed ponownym przesłaniem formularza. Kwestia jest o tyle dziwna, że skrypt działał, ale.. przestał.

Sesje:

  1. class Session {
  2.  
  3. public function Create($data = array())
  4. {
  5. foreach($data as $name => $value)
  6. {
  7. $_SESSION[$name] = $value;
  8. }
  9. return $_SESSION;
  10. }
  11.  
  12. public function Exist($session_name)
  13. {
  14. return (isset($_SESSION[$session_name]) && $_SESSION[$session_name] !== '') ? true : false;
  15. }
  16.  
  17. public function get($session_name)
  18. {
  19. return (self::Exist($session_name)) ? $_SESSION[$session_name] : false;
  20. }
  21. public function Destroy($session_name)
  22. {
  23. if(self::Exist($session_name))
  24. {
  25. unset($session_name);
  26. }
  27. }
  28. }
  29.  
  30. ?>


Token:

  1. <?php
  2. class Token {
  3. public function Generate()
  4. {
  5. Session::Create(["_USER_TOKEN" => md5(uniqid())]);
  6. return Session::get("_USER_TOKEN");
  7. }
  8.  
  9. public function Check($token_value)
  10. {
  11. if(Session::get("_USER_TOKEN") == $token_value)
  12. {
  13. Session::Destroy("_USER_TOKEN");
  14. return true;
  15. }
  16. return false;
  17. }
  18. }
  19. ?>


Wywołanie tokena w formularzu:
  1. <input type="hidden" name="token" value="<?php echo Token::Generate(); ?>" />


Sprawdzanie go:
  1. if(isset($_POST['submit']))
  2. {
  3. if(Token::Check($_POST['token']))
  4. {
  5. ...
  6. }
  7. else
  8. {
  9. $e = "jakiś tam błąd";
  10. }
  11. }


Generalnie po wejściu na stronę logowania i wywołaniu var_dump, nie pokazuje zarejestrowanej sesji _USER_TOKEN. Dopiero po odświeżeniu bądź po próbnie wysłania formularza. Niestety, nie działa. Wychodzi na to, że token zapisany w sesji jest inny niż ten zapisany w formularzu. Ktoś dostrzegł jakiś błąd? Pozdrawiam i liczę na pomoc.
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.04.2024 - 16:24