【发布时间】:2013-11-19 19:20:08
【问题描述】:
我创建了一个表单,其中包含一个隐藏输入,其值由函数设置。
<?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
【问题讨论】:
-
也许你的第二个文件调用生成方法和第一个一样?
-
不,如果这很容易:/
-
尝试检查它是否存在,可能会发生多个请求。
-
所有文件中都包含
session_start();吗? @JonLamer -
是的,它在所有文件中。
标签: javascript php ajax oop session