1

我有 3 个 .php 文件:

索引.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');
}
//...
?>

登录.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['comp_id'] 为空。我在这里做错了什么?提前致谢。

编辑:忘了提到这些页面在社交网络的 iframe 应用程序中。也许这就是问题所在?

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

4

3 回答 3

4

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

于 2012-06-12T20:48:06.317 回答
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

于 2012-06-12T22:19:35.007 回答
0

请咨询您的托管服务提供商,了解其 PHP 配置的详细信息,特别是它如何处理会话数据。

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

于 2014-08-26T10:42:06.260 回答