2

セッションが設定されない理由を検索しているときに、この SO Q/A を通過しました。

On $_GET set $_SESSION won't work

これが私のケースに当てはまるかどうかはよくわかりません。ここに行きます。

index.php

<?php 
session_start();

if (!isset($_SESSION["authenticated"])) $_SESSION["authenticated"] = false; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
...

次に、ユーザーが自分自身を認証するときに次を呼び出します。

認証.php

<?php
require_once "data/data_access.php";

$userName = "";
$password = "";

if (isset($_REQUEST["userName"])) $userName = $_REQUEST["userName"];
if (isset($_REQUEST["password"])) $password = $_REQUEST["password"];

$isAuthentic = isAuthenticUser($userName, $password);
$_SESSION["authenticated"] = $isAuthentic;
echo $isAuthentic;
?>

また、ユーザーがいるセクションのボタンを作成するために、この認証を 5 秒ごとにチェックしています。

認証済み.php

<?php echo isset($_SESSION["authenticated"]) && $_SESSION != false ? 'true' : 'false'; ?>

そして私のAjax呼び出し設定:

my_project.js

$(document).ready(function() { startAuthenticationChecking(); });

function startAuthenticationChecking() { 
    setInterval(function() { ajaxSession("authenticated.php"); }, 5000);
}

function ajaxSession(actionURL) {
    var authenticated = false;
    $.ajax({
        async: false,
        url: actionURL,
        success: function(authenticated) {
            alert(authenticated);
            if (authenticated) {
                if (("#addNewAtvButtonDiv").is(":empty"))
                    $("#addNewAtvButtonDiv").add("<button id='newAtvButton'>Inscrire un nouveau VTT en inventaire</button>");
                if (("#addNewSledButtonDiv").is(":empty"))
                    $("#addNewSledButtonDiv").add("<button id='newSledButton'>Inscrire un nouvel UTT en inventaire</button>");
                if (("#addNewUtvButtonDiv").is(":empty"))
                    $("#addNewUtvButtonDiv").add("<button id='newUtvButton'>Inscrire une nouvelle motoneige</button>");
                $("button").button();
            } else {
                $("#addNewAtvButtonDiv").children().remove();
                $("#addNewSledButtonDiv").children().remove();
                $("#addNewUtvButtonDiv").children().remove();
            }
        }
    });
}

私の問題

$_SESSION["authenticated"] = falseの直後に設定したのですがsession_start();ajaxSession()が で認証されているかどうかを尋ねるauthenticated.phpと、必ず を返します'false'。適切な資格情報を使用した認証後のイベントauthenticate.php

関連する質問:PHP / Ajax : How to show/hide DIV on $_SESSION variable value?

どんな助けでも大歓迎です! 私は最近、これに数日夜取り組んできましたが、今もそうです。

ありがとう!

4

2 に答える 2