繁体   English   中英

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

[英]Store random string in Session, which gets overwritten, when I call it through another PHP-File

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

<?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']; ?> <?php echo $_SESSION['token']; ?>

这是我存储在Dropbox上的项目

因为您每次进入站点都在生成新的?

<?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())代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM