ばかげた質問で申し訳ありませんが、最近クライアント向けのサイトをデザインしていて、セッションで奇妙なことが起こっています。
このサイトには、ユーザーを PayPal にリダイレクトする PayPal ボタンがあり、サイトに再度リダイレクトされる前に支払いを確認できます。
ユーザーがリダイレクトされる前に、セッション変数の負荷が保存されます。PayPal に関するものもあれば、ログインしているユーザーやショッピング カートのアイテムなどを決定するための変数など、サイト上のものに関するものもあります。
さて、ここで問題が発生しています...
ユーザーは checkout.php から PayPal にリダイレクトされます。リダイレクトされる前に、サイトのすべてのセッション変数が存在します (var_dump および print_r によって表示されます)。これで問題ありません。
ユーザーは PayPal から orderreview.php に戻りますが、var_dump と print_r はサイト セッション変数が欠落していることを示していますが、PayPal のものはすべてそこにあります。
「session_start();」を削除して、この問題を修正しました。orderreview.php のトップから。
私の質問は、なぜその行を削除すると問題が解決したのですか? なぜ以前はうまくいかなかったのですか?
PHP セッションは理解できたと思っていましたが、思ったほど理解できていませんでした。
私はこれをどこかで読みます:
「PHP 4.3.3 以降、セッションがすでに開始されている間に session_start() を呼び出すと、レベル E_NOTICE のエラーが発生します。また、2 回目のセッション開始は単純に無視されます。」
そのため、セッションが既に開始されている場合、スクリプトの先頭で session_start を呼び出しても何の影響もないと想定していました。
回答ありがとうございます。これがばかげた質問である場合は、もう一度お詫び申し上げます。