Nic*_*ick 5 php jquery session-variables sessionid
我有一个登录页面,可在成功登录后设置会话变量。然后,登录页面重定向到管理页面。管理员页面能够读取会话变量。但是,当我执行一个在内容div中加载viewUsers.php的jQuery load()函数时,会话变量就消失了。奇怪的是,会话ID是相同的。
我在管理页面和viewUsers页面上都使用了var_dump()。管理页面显示了登录页面上的所有适当变量,但使用jQuery load()函数var_dump $ _SESSION调用的viewUsers页面为空白。$ _COOKIE ['PHPSESSID']的var_dump具有正确的ID,对我来说没有任何意义。
这就是我设置会话变量的方式。
$_SESSION['userID'] = $userInfo['ID'];
$_SESSION['userType'] = $userInfo['userType'];
$_SESSION['programID'] = $userInfo['programID'];
Run Code Online (Sandbox Code Playgroud)
这是jQuery
$("#content").load("viewUsers.php");
Run Code Online (Sandbox Code Playgroud)
所有页面的最顶部都有session_start()。当我尝试使用window.open和window.location而不是jQuery load()函数时,会话变量也不起作用。
即使我具有正确的会话ID,一些会话变量也会丢失。如果有人能对此有所启示,我将不胜感激!
截至目前,我正在填充隐藏字段,并使用post函数而不是load来解决它。我知道这不是最好的方法,但是这是我找出方法的唯一方法。
编辑: 这是读取会话变量正常的索引的顶部。
<?php
session_start();
//require("session.php");
if(!isset($_SESSION['userID'])){
header("location: ../login/index.php");
}
?>
Run Code Online (Sandbox Code Playgroud)
这是整个查看用户
<?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>
Run Code Online (Sandbox Code Playgroud)
另一个编辑: 这是加载viewusers的javascript代码。我使用post的唯一原因是因为我将会话变量设置为隐藏字段以便传递会话变量。在Viewuser上,我使用foreach循环来设置会话变量。我了解这并不安全。函数maintainUsers(){
$.post("viewUsers.php", $("#sessionform").serialize(),function(data){
//alert(data);
$("#content").load("viewUsers.php");
});
}
Run Code Online (Sandbox Code Playgroud)
session_start()通常,当您不使用读取会话数据时,就会发生此类错误。
尝试放置(虽然,你说你有,我建议重新检查)
session_start();
Run Code Online (Sandbox Code Playgroud)
在你的开始时viewUsers.php
如果上述情况并非如此,那么您当前的页面(执行该.load()函数的页面)正在重置会话并篡改值。除非你上传代码或者找出来,否则这种情况没有解决办法。
| 归档时间: |
|
| 查看次数: |
6182 次 |
| 最近记录: |