1

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['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 に答える