我正在编写一个应该通过AJAX工作的登录功能。如果用户能够登录,则应该有两个新cookie。如果它不起作用(错误的电子邮件或密码),则不会设置cookie。
我的问题是这个。我登录时,设置了cookie,但是当它到达检查cookie的代码时,它是空的。当我重新加载我的页面时,cookie就在那里,一切正常。为什么在AJAX请求之后cookie不可用?
使用Javascript:
$.ajax({
type: "POST",
url: "php/login.php",
data: dataString,
async: false
});
var email = '<?php echo $_COOKIE['email']; ?>';
var login = '<?php echo $_COOKIE['login']; ?>';
if(email != null && email != "" && login != null && login != "") {
var html = '<h3>You are logged in as <b>' + email + '</b></h3><br><br><button id="logoutbtn" class="submitButton">Ausloggen</button>';
$("#registInfos").empty();
$(html).appendTo($('#registInfos'));
} else {
console.log('login not successful');
$('<p>Login failed, wrong email or password?</p>').appendTo($('#registInfos'));
}
login.php的内容:
<?php include('../../admin/php/connection.inc.php'); ?>
<?php header('Access-Control-Allow-Origin: *'); ?>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['email'];
$password = $_POST['password'];
$abfrage = "SELECT email, password FROM ios_user WHERE email = '$email' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->password == $password) {
session_start();
setcookie("login", "true", time()+3600*24*30*12, "/");
setcookie("email", $email, time()+3600*24*30*12, "/");
session_commit();
}
}
?>
答案 0 :(得分:1)
问题是这段代码:
var email = '<?php echo $_COOKIE['email']; ?>';
var login = '<?php echo $_COOKIE['login']; ?>';
当页面加载时,服务器会根据客户端发送的cookie呈现电子邮件,登录。但是当您发送ajax请求时,页面不会重新加载,并且这些值不会更改。即使设置了cookie,您仍然使用页面首次加载时呈现的旧值。
我建议你: