1

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

好吧,我在 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 不允许 cookie(它说 cookie 被阻止)当我更改设置并允许它在两个浏览器中工作的 cookie 时,但这不是一个合适的解决方案,因为如果我需要它不会有任何意义要求所有访问者在他们的浏览器上允许使用 cookie。请帮忙 :-(

4

1 回答 1

0

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

如果你用谷歌搜索,你会发现这样一个 P3P 的不同示例。这只是在 header() 中设置的短行。您只需使其适应您的需求。

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

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

登录.html

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

仪表板.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(); 
}
于 2013-08-07T08:03:33.057 回答