AJAX を介して動作するログイン関数を作成しています。ユーザーがログインできた場合、2 つの新しい 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();
}
}
?>