会话变量在页面之间丢失

时间:2012-06-12 20:47:06

标签: php ajax session

我有3个.php文件:

的index.php

<?php
session_start();

if (isset($_SESSION['comp_id']))
{
    require_once 'scan_albums.php';
}
else
{
    require_once 'login.php';
}

echo "SESSION['comp_id']=" .$_SESSION['comp_id'];
?>

scan_ablums.php

<?php
session_start();
if (!isset($_SESSION["comp_id"]))
{
    header('Location: index.php');
}
//...
?>

的login.php

<?php
session_start();
if (isset($_SESSION['comp_id']))
{
    header('Location: index.php');
}
$_SESSION['comp_id'] = 3;
?>

我通过ajax调用login.php:

$.ajax(
{
  type: 'POST',
  url: 'login.php',
  data: {'login': login, 'password': hpass},
  success: function(data)
  {
    console.log("ajax: [comp_id]=" + data + "\n");
    window.location = "index.php";
  }
});

重定向到我的index.php $ _SESSION [&#39; comp_id&#39;]为空。我在这做错了什么? 提前谢谢。

编辑:忘记提及这些网页位于社交网络中的iframe应用中。也许这就是问题?

编辑:问题肯定在iframe中。会话很好,我的本地机器。任何想法如何解决它?

3 个答案:

答案 0 :(得分:4)

你必须调用session_start();在每个使用会话的页面的开头。

答案 1 :(得分:2)

http://pt2.php.net/manual/en/function.session-write-close.php

尝试调用session_write_close();在你做“登录”之后

检查页面中的session_id,看它是否完全相同。

另见:

  

启用session.use_trans_sid时,session_start()函数   将注册一个内部输出处理程序以进行URL重写。

在session_start

答案 2 :(得分:0)

与您的托管服务提供商核实其PHP配置的详细信息,特别是它如何处理会话数据。

理想情况下,将他们的php.ini配置与您的本地(工作)配置进行比较。检查会话部分。