这是我正在使用的非常简化的示例。每次用户访问页面时,jQuery脚本调用post回调来收集一些数据。在这样做的同时,我正在改变webToken的内容…
我的问题是如何保留令牌,即使在post-back之后?我知道这可能是由于重新呈现整个页面造成的。但是我已经尝试完全消除渲染表单,我仍然不能解决这个问题。
我想知道我在这里还会遇到什么问题。
我希望这段代码能更好地解释我的问题。
<head>
<script>
$().ready(function() {
var file = location.pathname.substring(1, location.pathname.length);
var data =
{
platform:navigator.platform
};
$.post(file,
{
javascript: data
});
});
</script>
</head>
<body>
<?php
// doing things with $_POST['javascript']...
if($_SERVER['REQUEST_METHOD'] === 'POST') {
if($_POST['webToken'] != $_SESSION['webToken']) {
echo "The token did not match!";
}
else {
// do something
}
}
else {
$token = md5(uniqid());
$_SESSION['webToken'] = $token;
echo '<form method="post" action="SELF!!!">
<input type="text" name="title" value="' . $title . '">
<input type="hidden" name="webToken" value="' . $token . '">
<input type="submit" value="Submit"></form>';
}
?>
</body>
我看到你的$webToken
只生成一次。
- 还有其他地方可以生成它吗?
-
session
是否已经启动(自动或手动启动)?
同样,在post (ajax)调用中,您可以:
- 生成一个新的令牌
- 在呼叫响应中返回
- 设置调用完成与jQuery
$('input[name=webToken]').val(yourNewToken);