我使用一个带有生成令牌的脚本和网站的链接,但我总是有问题,第一次刷新下次一切都很好
session_start();
$link = 'http://localhost/';
$id_user = '123456789';
function getToken($name = '', $key)
{
session_start();
$token = sha1(uniqid());
$_SESSION[$name.'_token'] = $token;
return $token;
}
function checkToken($name = '', $post)
{
session_start();
global $link, $id_user;
if(isset($_SESSION[$name.'_token']) && isset($_POST[$post]))
{
if(sha1($link.$id_user.$_SESSION[$name.'_token']) == $_POST[$post])
{
return true;
}
else {
return false;
}
}
else {
return false;
}
}
首先我创建新令牌,如果为空或不是ajax调用 我使用link,id用户和唯一令牌来验证是好还是noot
if(empty($_SESSION['new_token']) || !$_REQUEST['ajax'] AND empty($_POST)) {
$tokenUnique = sha1($link.$id_user.getToken('new'));
} else {
$tokenUnique = sha1($link.$id_user.$_SESSION['new_token']);
}
在ajax帖子中,如果checkToken好的话,我会用它来查看
if(checkToken('new', 'token_hidden') == false) {
die('error token');
}
<input type="hidden" name="token_hidden" value="<?=$tokenUnique?>" />
你有安全的ajax或complet我的代码的解决方案吗? 感谢
Jquery的
$.ajax({
type: "POST",
data: $(div).serialize(),
url: 'file.php?ajax=1',
success: function(data) {
var obj = JSON.parse(data);
}
});