在Session中存储随机字符串,当我通过另一个PHP文件调用它时会被覆盖

时间:2013-11-19 19:20:09

标签: javascript php ajax oop session

我创建了一个表单,其中包含一个隐藏的输入,其值由一个函数设置。

<?php
    class Token {
        public static function generate(){
            return $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
        }
    }
?>

这就是这样的:

<input type="hidden" id="token" value="<?php echo Token::generate(); ?>">

我通过JavaScript / AJAX将它发送到另一个文件(例如“form.php”),其中包含以下内容:

<?php
   session_start();
   @require_once 'Token.class.php';

   echo $_POST['token'] . " => " . $_SESSION['token']; // different tokens, why?
   // $_POST['token'] is the one, that I want
   // and so on...
?>

当我输入时,为什么值会发生变化:<?php echo $_SESSION['token']; ?>

这是我的项目stored on Dropbox

1 个答案:

答案 0 :(得分:3)

因为您每次进入网站时都会生成新的文件吗?

<?php
    class Token {
        public static function generate(){
            if(isset($_SESSION['token']) && $_SESSION['token']) return $_SESSION['token'];
            else return $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
        }
    }
?>

PS。您可能希望改为使用md5(uniqid())