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;

サイト/ダッシュボード.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 を許可するように依頼してください。助けてください :-(

4

1 に答える 1

0

Webサイトで同じ問題が発生しました。IE と Safari は、Cookie をサードパーティの Cookie として検出する可能性があります。それを修正するか、P3P プライバシー ポリシーを追加する必要があります。

グーグルで検索すると、そのような P3P のさまざまな例が見つかります。header() に設定するのは短い行です。ニーズに合わせて調整するだけです。

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

編集:コードを再構築することで問題を解決できるかもしれません:

login.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 に答える