我在index.php中创建了登录表单,从session变量开始。
session_start()
$_SESSION["token"] = rand(1000, 9999);
通过ajax发送表单数据和会话变量
$( "#login-button" ).click(function(e) {
e.preventDefault();
var form = $('form#login-form')[0];
var formData = new FormData(form);
formData.append("token", "<?php echo $_SESSION["token"]; ?>");
$.ajax({
type: 'POST',
url: 'user_login.php',
data: formData,
contentType: false,
cache: false,
processData:false,
beforeSend: function(){
},
success: function(data){
}
});
});
在user_login.php中我检查发布标记和会话令牌,如果它不同则抛出错误。
<?php
session_start()
if(!empty($_SESSION["token"]) && !empty($_POST["token"]) && $_SESSION["token"] == $_POST["token"])
{
//checking the formdata variables here for login
}
else {
echo "SESSION: " . $_SESSION["token"];
echo " TOKEN " . $_POST["token"];
}
?>
在Firefox和边缘仍在工作。
为什么铬不同?
if(!isset($_SESSION)){session_start();}
这不是一件好事,因为session_start
must首先输出(如echo
或html)。
检查session_start();
是否是第一个并写:
<?php
session_start();
//your code.
刚删除了.htaccess重定向规则,它现在运行正常。