私はログインページでウェブゲームを作成しています。これは、ゲームの「プロ」バージョンに変換したい場合、ユーザーをPaypalに連れて行きます。PHP - ペイパルリダイレクト後のセッションを失う
問題は、セッションがPaypalからpayment_successful.phpページに戻ってきているようです。セッション変数はすべて空です。
私はすべての適切なページにsession_start()
行を付けることから始めました。セッションID(Chromeのコンソールから取得)は、セッションの開始時と同じで、payment_successful.phpに戻ります。したがって、これは一定しているように見えます。
いろいろなアイディアをいろいろ試した後、私は手動でセッションIDを追加しようとしました。
ログインページとPayment_successfulページ両方:
session_id('my_id');
session_start();
これは魔法のように動作し、完全に私のセッション変数のすべてを返します。しかし、私は固定セッションIDを持つことは非常に悪い考えだと思っています(申し訳ありませんが、私はこのことを忘れています)。
だから私は、それが単純に固定値の代わりに新しい値を取ることを期待して、私自身のセッションIDを作成するために、ログインページを変更:
ログインページ
add_seshid();
session_start();
// session_set_cookie_params (lifetime,'/','.mydomain.com',false);
function add_seshid() {
$sesh_salt1 = "*s!$e";
$sesh_salt2 = "$6#£";
$sesh_date = date("mYhds");
$sesh_pass = "lambchops".$sesh_date;
$sesh_token = hash('ripemd128',"$sesh_salt1$sesh_pass$sesh_salt2");
session_id($sesh_token);
}
Payment_successfulページ:
session_id($sesh_token);
session_start();
それが出力にセッションID(例えば。986a25f1d1fdabc62837def39b485c6)を行い、そして右のセッション全体にまたがるが、それはあまりにもすべてのセッションを返しません。変数。 session_set_cookie_paramsの行私自身のドメイン名を使って、ドメイン名の変更に問題があるかどうかを確認しましたが、これは何の違いもありませんでした。また、この記事の目的のために、誰かがかゆみでコメントしている場合に備えて、すべてのパスワード、塩類などが変更されています!!
誰かが私を正しい方向に向けることができます。
多くのありがとう、
ダン。
こんにちは、はい、最初から最後まで同じPHPSESSIDですが、その間にあるPaypalページを除いて、独自のIDを持っています。 session_idをsession_startの下に移動しましたが、空の戻り値との違いはありません。 Paypalへの私のリンクは:\tヘッダー( '場所:https://www.sandbox.paypal.com/cgi-bin/webscr'.$querystring); \t exit(); –
paypal以外のものに対してあなたのコードをテストしようとしましたか?あなたのPHPページにいくつかの入力フィールドを提出する簡単なフォームを考えてみましょう。 PHPはセッションを開始し、$ _POSTから読み取るセッション変数を設定します。次に、あなたを他のサイトに導くサイトへのリンクをクリックします(別のip/fqdn)。この他のサイトでは、元のサイトの別のphpファイルにリンクを張ってセッションを開始し、単にセッション変数を表示します。私は前にpaypalサンドボックスで働いていました。 –