我有一个登录页面,该页面在成功登录后设置 session 变量。然后,登录页面重定向到管理页面。管理页面能够读取 session 变量。但是,当我执行在内容div中加载viewUsers.php的jQuery load()函数时, session 变量就消失了。奇怪的是, session ID是相同的。

我在管理页面和viewUsers页面上都使用了var_dump()。管理页面显示了登录页面上的所有适当变量,但是使用jQuery load()函数$ _SESSION的var_dump调用的viewUsers页面为空白。 $ _COOKIE ['PHPSESSID']的var_dump具有正确的ID,对我来说没有任何意义。

这就是我设置 session 变量的方式。

$_SESSION['userID'] = $userInfo['ID'];
$_SESSION['userType'] = $userInfo['userType'];
$_SESSION['programID'] = $userInfo['programID'];

这是jQuery
$("#content").load("viewUsers.php");

所有页面的最顶部都有session_start()。当我尝试使用window.open和window.location而不是jQuery load()函数时, session 变量也不起作用。

即使我具有正确的 session ID, session 变量也会丢失的一些原因。如果有人能对此有所启示,我将不胜感激!

截至目前,我正在填充隐藏字段,并使用post函数而不是load来解决它。我知道这不是最好的方法,但是这是我找出方法的唯一方法。

编辑:
这是索引的顶部,可以很好地读取 session 变量。
 <?php
    session_start();
    //require("session.php");
    if(!isset($_SESSION['userID'])){
        header("location: ../login/index.php");
    }
?>

这是整个查看用户
    <?php
session_start();

//foreach($_POST as $name => $value){
    //$_SESSION[$name] = $value;
//}

//echo " session id " . $_COOKIE['PHPSESSID'];
var_dump($_COOKIE);
var_dump($_SESSION);
?>

<?php require("adminFunctions.php"); ?>


<h2>View Current Users</h2>
<?php require("userlinks.php"); ?>
<table id="userTable" class="tablesorter">
    <?php getUsers($_SESSION['programID'], $_SESSION['userType']) ?>
</table>
<script type="text/javascript">

    $('td[name="userID"]').hide();

    //$("#userTable th").click(function(){
        //color();
        //colorTable();
        //color();
    //});

    function colorTable(){
        $("tr:odd").css("background-color", "#c0c0c0");
        $("tr:even").css("background-color", "#ffffff");
    }

    function color(){
        $("tr:odd").css("background-color", "#ffffff");
        $("tr:even").css("background-color", "#ffffff");
    }

    $(document).ready(function(){
        //colorTable();
        $("#userTable").tablesorter({widgets: ['zebra']});

    });
</script>

另一个编辑:
这是加载 View 用户的javascript代码
我使用post的唯一原因是因为我将 session 变量设置为隐藏字段以便传递 session 变量。在viewuser上,我使用foreach循环来设置 session 变量。我了解这并不安全。
函数maintainUsers(){
$.post("viewUsers.php", $("#sessionform").serialize(),function(data){
        //alert(data);
        $("#content").load("viewUsers.php");
    });
}

最佳答案

可能是一个长镜头,但您使用的是任何框架或cms?我知道wordpress会删除 session 变量(http://blog.ginchen.de/en/2008/08/15/session-variablen-in-wordpress/),您可以显示用于加载viewUsers的JavaScript代码吗?您在本地服务器上编程吗?

关于PHP session ID相同,但变量丢失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5828424/

10-14 19:52
查看更多