ですから、Cookieを使用するのはこれが初めてで、Cookieの設定に問題があります。私はすべてを正しくやっていると思います(しかし、あなたはプログラミングがどのようになり得るかを知っています)。jquery.ajax
とにかく、あるphpスクリプト(autologin.php)を呼び出してvalidateLogin.js
、別のスクリプト(login.php)の関数を使用して、ユーザーとそのパスワードがデータベースにあるかどうかを確認するログインシステムを作成しています。login.php
ユーザーが存在し、パスワードが同じである場合、Cookieが設定され、いくつかのjsonデータが返されautologin.php
、その後、元のjquery.ajax
メソッドsuccess
関数にさらにいくつかのjsonデータが返されます。次に、success
関数はにリダイレクトされuserarea.html
ます。ここで、js関数はユーザーデータを自動的にロードして、使用できるようにします。これは、別のajax
呼び出しで行われますloaduserdata.js
whichはwhichを呼び出し、loaduserdata.php
チェックしisset($_COOKIE['user']
てから、何が起こったかに応じていくつかのjsonデータを返します。ただし、isset($_COOKIE['user']
失敗し、コンソールまたはログ(php、mysql、apache)のいずれにもエラーが表示されません。だから私は本当に困惑しています。これが私のコードです:
validateLogin.js
function validateLogin(){
$(document).ready(function(){
$("#loginform").submit(function(){
$.ajax({
type: "POST",
url: "./php/autologin.php",
data: {
'login': $("#login").val(),
'password': $("#password").val()
},
dataType: "json",
success:function(data){
if(data.status == "success"){
alert(data.message);
window.location = "./userarea.html";
} else if (data.status == "error"){
alert(data.message);
}
},
error:function(thrownError){
console.log(thrownError);
}
});
return false;
});
});
}
autologin.php
<?php
include './login.php';
$login = $_POST['login'];
$password = $_POST['password'];
$loginattempt = login($login, $password);
$loginattemptdata = json_decode($loginattempt);
if ($loginattemptdata->{'status'} === "success") {
echo json_encode(array('status' => "success", 'user' => $loginattemptdata->{"user"}, 'message' => "Login Successful!"));
die();
} else {
echo json_encode(array('status' => "error", 'error' => "loginfailure", 'message' => $loginattemptdata->{"message"}));
die();
}
?>
login.php
<?php
include './connect_to_mysql.php';
function login($log, $pass) {
$link = connect_to_mysql();
$linkdata = json_decode($link);
if ($linkdata->{'status'} === "success") {
$sqlquery = mysql_query("SELECT * FROM userdata WHERE login='$log' AND password='$pass'") or die(mysql_error());
if (mysql_num_rows($sqlquery) == 1) {
setcookie("user", $log, 86400, '/', 'localhost');
return json_encode(array('status' => "success", 'message' => "Login Successful.", 'user' => $log));
die();
} else {
return json_encode(array('status' => "error", 'error' => "loginfailure", 'message' => mysql_error()));
die();
}
} else {
return json_encode(array('status' => "error", 'error' => "connectionerror", 'message' => $linkdata->{'message'}));
die();
}
}
?>
loaduserdata.js
$(document).ready(function(){
$.ajax({
type:"POST",
url:"./php/loaduserdata.php",
success:function(data){
if(data.status === "success"){
alert(data.status);
alert(data.user);
} else if (data.status === "error"){
alert(data.status);
alert(data.message);
window.location = "./index.html";
}
},
error:function(thrownError){
console.log(thrownError);
}
});
});
loaduserdata.php
<?php
if (isset($_COOKIE['user'])) {
$user = $_COOKIE['user'];
echo json_encode(array('status' => "success", 'message' => $user));
die();
} else {
echo json_encode(array('status' => "error", 'message' => "Please login before continuing."));
die();
}
?>
私が読んだことから、新しいスクリプトで利用できるようにCookieを設定した後、更新またはリダイレクトする必要があります。これが私が行っていることだと思います。どんな助けや指示も大歓迎です。ありがとう!