我有一个页面,用户登录和一些会话变量被设置:PHP AJAX控制会话变量消失
$_SESSION['username'] = "Bob Smith";
$_SESSION['company'] = "acme Co";
$_SESSION['someData'] = "yes";
到目前为止好。
现在用户在landing.php,在这里我有一系列用户用户导航的左侧链接。
<li class='menu' id='createUser'>Create New user</li>
<li class='menu' id='modUser'>Modify User</li>
<li class='menu' id='reports'>Reports</li>
<li class='menu' id='api'>API Management</li>
<li class='menu' id='logout'>Logout</li>
和导航的jQuery:
$('.menu,.menu2').click(function(){
var action = $(this).attr('id');
$.ajax({
type: "POST",
url: "admin.php",
data: "action="+action,
success: function(result){
$('#modData').html(result);
}
});
admin.php的返回一个包含var动作的PHP页面。所以modUser.php或reports.php等都会以不同的形式和数据返回。
现在。奇怪的事我不知道。当我点击任何链接。我的会话变量仍然设置。当我再次点击任何链接(除注销外)时,所有会话变量数据都消失了。我没有任何地方session_destroy除了logout.php
任何这些页面的显示变量仅在第一次的print_r($ _ SESSION)....第二次点击我得到的结果
Array()
我在session_start ()在每一页都可能。
我知道这是一个很长的时间,你可能需要更多的信息,但是这里有什么内在的错误,我错过了会导致会话数据被删除。
admin.php的
<?php
session_start();
if ($_POST['action'] == "reports")
{
include('reports.php');
}
if ($_POST['action'] == "logout");{
include('logout.php');
}
if ($_POST['action'] == "api"){
include('apiMgmt.php');
}
?>
检查每个页面上的'session_id()'。如果值发生变化,那么你会丢失会话cookie并获得新/空会话。会议不可能被破坏,只会被抛弃。通常这是一个cookie设置问题。 – 2014-12-01 20:13:33
域始终保持不变?尝试至少两个浏览器 – 2014-12-01 20:15:17
似乎你的问题可能在admin.php某处。也许你应该发布。 – Rooster 2014-12-01 20:15:37