別のサイトの iframe で使用するように設計された symfony サイトを持っています。Safari は iframe に Cookie を設定させないため、Safari を除くすべてのブラウザで問題なく動作します。ログインする代わりに、エラーのない空白のログイン ページに戻ります。
私が試してきた解決策は、PHPSESSID をフォームの非表示フィールドとして設定し、それを使用して Cookie の代わりにセッションを追跡することです。私が抱えている問題は、ログイン後、formlogin が新しいセッション キーを設定してリダイレクトを送信しているように見えることです。このリダイレクトで正しいセッション キーを取得できません。
app.php の最後に以下を追加して、リダイレクトされた URL の最後にセッション キーを追加しようとしました (これは非常にシンボリックではありませんが、かなり必死になっています)。
foreach(headers_list() as $header) {
if (substr($header,0,9) == "location:") {
if (strpos($header, '?')===FALSE && strpos($header, '#')===FALSE ) {
header($header."?PHPSESSID=".session_id());
}
}
}
これによりセッションキーが追加されますが、フォームログインによって作成された新しいセッションキーではなく、古いセッションキーが追加されているようです。その結果、ログインしようとすると、「セッションがタイムアウトしたか、Cookie が無効になっています。」というメッセージが表示されます。
正しい session_id を取得するにはどうすればよいですか? これを行うより良い方法はありますか?