我有一个登录页面,成功登录后会设置会话变量。然后,该登录页面会重定向到管理员页面。管理员页面可以很好地读取会话变量。但是,当我在内容div中使用jQuery load()函数加载viewUsers.php时,会话变量消失了。奇怪的是,会话ID是相同的。
我在管理员页面和viewUsers页面上都使用了var_dump()。管理员页面显示来自登录页面的所有正确变量,但是用jQuery load()函数调用的viewUsers页面的$_SESSION的var_dump为空。$_COOKIE['PHPSESSID']的var_dump具有正确的ID,但这对我来说毫无意义。
以下是我设置会话变量的方式。
这是jQuery。
所有页面在顶部都有session_start()。当我尝试使用window.open和window.location而不是jQuery的load()函数时,会导致session变量也无法正常工作。
一些方式使得session变量丢失,即使我有正确的session id。如果有人能够解决这个问题,我会非常感激!
目前,我正在填充隐藏字段并使用post函数来绕过它。我知道这不是最好的方法,但这是我找到的唯一方法。
编辑:这里是index文件的顶部,可以正常读取session变量。
这里是完整的查看用户视图。
我在管理员页面和viewUsers页面上都使用了var_dump()。管理员页面显示来自登录页面的所有正确变量,但是用jQuery load()函数调用的viewUsers页面的$_SESSION的var_dump为空。$_COOKIE['PHPSESSID']的var_dump具有正确的ID,但这对我来说毫无意义。
以下是我设置会话变量的方式。
$_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变量丢失,即使我有正确的session id。如果有人能够解决这个问题,我会非常感激!
目前,我正在填充隐藏字段并使用post函数来绕过它。我知道这不是最好的方法,但这是我找到的唯一方法。
编辑:这里是index文件的顶部,可以正常读取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>
另一个编辑: 这是加载viewusers的javascript代码。 我使用post的唯一原因是我将会话变量设置为隐藏字段,以便传递会话变量。在viewusers中,我使用foreach循环来设置会话变量。我知道这不安全。 function maintainUsers(){
$.post("viewUsers.php", $("#sessionform").serialize(),function(data){
//alert(data);
$("#content").load("viewUsers.php");
});
}