php会话没有在iis上工作

时间:2013-08-07 05:55:49

标签: php internet-explorer session iis

这是我在这里的第一个问题(原谅我,如果我做了任何愚蠢的事情)。我真的很喜欢这个论坛并且是常客。

好吧,我在iis服务器上有一个登录脚本,它在Chrome,Mozilla,Opera上没有任何问题,但在Safari和IE上没有任何问题(下面是相同的代码行):

网站/登录/ login.php中

session_start();
$_SESSION['signed_in'] = true; //i checked $_SESSION['signed_in'] here and it is "1".
session_write_close(); 
header("Location: ../dashboard.php");exit;

网站/ dashboard.php

session_start();
if($_SESSION['signed_in'] != true)
{
// well $_SESSION['signed_in'] is empty :-( and goes back to index.
header("Location: index.php");exit; 
}

编辑:

嗨,我刚刚发现IE和Safari不允许使用cookies(它说饼干被阻止),当我更改设置并允许它在浏览器中使用时,但它不是一个合适的解决方案,因为它不会有任何意义我需要让所有访问者在他们的浏览器上允许cookie。 请帮忙: - (

1 个答案:

答案 0 :(得分:0)

在网站上遇到同样的问题。 IE和Safari可能会将您的cookie检测为第三方cookie。您必须解决此问题或添加P3P隐私政策。

如果你谷歌的话,你会发现这种P3P的不同例子。它只是在header()中设置的一条短线。你只需要根据自己的需要进行调整。

http://www.w3.org/P3P/

编辑:也许你可以通过重组代码解决问题:

的login.html

<form action="dashboard.php" method="post">
<input ...>
</form>

dashboard.php

<?php 
required_once('login_validation.php');
if($_SESSION['signed_in'] != true)
{
  header("Location: index.php");exit; 
}
//do stuff to show normal dashboard

login_validation.php

$valdiate=//validation stuff
if ($valdiate) {
  session_start();
  $_SESSION['signed_in'] = true;
  session_write_close(); 
}