【发布时间】:2013-06-01 22:02:17
【问题描述】:
我正在编写一个应该通过 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();
}
}
?>
【问题讨论】:
-
您必须在登录后重定向到另一个页面。您不能在一个操作中设置和读取相同的 cookie。
标签: php javascript ajax jquery cookies