我创建了一个表单,其中包含一个隐藏输入,其值由函数设置。
<?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
最佳答案
因为每次进入网站时都会生成新的?
<?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())
。
关于javascript - 在 Session 中存储随机字符串,当我通过另一个 PHP 文件调用它时,该字符串会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080213/