2

クッキーに問題があります。

基本的に、ユーザーのセッション ID を次のように Cookie として保存しようとしています。

 setcookie("CheckoutSessionID",session_id(),time()+3600);

これは私のサイトでは正常に機能し、Cookie は正しい値を持ち、十分な期間有効です。しかし、ユーザーが支払いを確認できるように、私のサイトは PayPal にリダイレクトされます。その後、ユーザーは私のサイトにリダイレクトされます。すべての Cookie 変数がなくなったのは、ユーザーがサイトにリダイレクトされたときです。

のようにprint_r($_COOKIE)var_dump($_COOKIE)などには値がありません。これは、PayPal との間でやり取りされた後にのみ発生します。

なぜこれが起こっているのかについてのアイデアはありますか?

すべての助けを前もってありがとう、私は困惑しています!

4

3 に答える 3

4

さて、私はかなり深く掘り下げていて、私の以前の質問が関連していることに気付きました:

PHP セッションと session_start()

基本的に、PayPal に行って戻ったときに PHP セッションが削除されていたため、問題が発生しました。ただし、これは実際には、セッション全体ではなく、セッション COOKIE が破棄されたために発生したと思います。

ここでもこのトピックを見つけました: Do PHP sessions get Loss when directing to a payment gateway?

誰かからの回答では、Cookie やセッションを使用する代わりに、戻り URL を含む GET リクエストを使用してデータを送り返すことを提案しています。

最初に Cookie を使用した理由は、セッションが適切に機能していなかったため、ユーザーのセッション ID を保存することでした。基本的には、戻り URL を次のようにしました。

mydomain.co.uk/mypage.php?SessionID=[ここにセッション ID が入ります] を取得し、ユーザーのセッション ID を設定します。

並びました!今のところ...クッキー/セッションが適切に機能しないために、おそらく別のレンガの壁にぶつかることになるでしょう。

助けてくれてありがとう:)

于 2012-08-04T05:27:11.637 に答える
2

実際に何が起こっていても(Cookieが空になっている)、論理的には正しいです。page/make リクエストを送信すると、ブラウザはリクエストとともにクライアントのコンピュータから を送信し、変数でcookieを見つけることができます。cookiecookie

ただし、ユーザーを別の外部ページ/サイトにリダイレクトしてから再度ページに戻ったら、(あなたの場合) ユーザーが からサイトに戻ったときに を送信していないためcookie、変数で を取得しないでください。リクエストで。cookiepaypalpaypalcookie

この場合、ユーザーを にリダイレクトする前にデータをデータベースに保存し、paypalユーザーがサイトに戻ってきたら、データベースからそのデータを取得できます。

于 2012-08-04T05:16:16.617 に答える