我有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中。会话很好,我的本地机器。任何想法如何解决它?
答案 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配置与您的本地(工作)配置进行比较。检查会话部分。