0

[@the downvote とばか発言、人々を打ち負かすのはクールではありません。質問をする前に、ドキュメントとコースノートを 3 日間再​​確認しました。ジェームズがしたように、これを閉じて、役に立たない事実に反するコメントが積み重なる馬鹿の合唱を防ぎます. Charles と Brent B に大変お世話になりました。これは Safari の問題ではないことが判明したため、これらのタグを削除しました。]


$_SESSION が Safari で設定されていないため、複数ページのフォームが壊れます。$_POST、$_REQUEST は設定されます (ただし、後続のページでは明らかに消えます)。バージョンは PHP: 5.3.1、Safari 5 です。

ヘルプ!次のいずれにも問題はありません。すべてを確認し、他の関連する質問をすべて読みました。

  • session_start() は機能します。SID/PHPSESSID はページ間で保持されます。
  • session.use_cookies = 1、session.use_only_cookies = 1
  • php.iniを確認しましたが、問題ないと思います
  • すべての Cookie を受け入れるように Safari を設定しました (今のところ)。変わりはない。
  • $_SESSION['debug']を手動で設定できますが、それページ間で保持されます (セッション ファイルは正しく書き出されます)。そうしない限り、$_SESSIONは定義されません。

このナンセンスをデバッグする時間がないので、次の土壇場での回避策のうち、最も醜くないものはどれですか? (これはプログラミングの割り当てであり、プロダクション コードではありません) コース ノートによると、$_SESSION は $_POST、$_REQUEST、$_GET、セッション、およびグローバルをマージすることになっていますよね?

  1. $_SESSION = array_merge($_SESSION,$_POST);を手動で実行します。【これは効く】
  2. 非表示のフォームを使用して、後続のフォームに$_POSTを再投稿します
  3. 他の?

(より広い意味で、PHP は単に Safari (5) で壊れていると考えるべきですか?)

4

1 に答える 1

5

$_SESSION は他のスーパーグローバル配列をマージしません。それは独自の配列です。$_REQUEST は $_POST と $_GET のマージですが、それだけです。あなたの説明から、 $_SESSION は正常に動作しています。公式マニュアルを読んでください。 http://www.php.net/manual/en/language.variables.superglobals.php

于 2011-04-11T07:31:15.187 に答える