0

私は奇妙な問題を抱えています。

私が管理している自動車ショーの Web サイトの登録スクリプトがありますが、理由もなく古いコードが壊れています。以前は機能していましたが、現在は機能していません。

セッション変数を正しく設定しています。変数の配列全体をセッションに保存しています。フォームが新しいページにリロードされ、確認のために登録情報を表示すると、フォームが送信されるとセッションが機能することがわかります。ただし、スクリプトはその後 PayPal ページに進み、そこでユーザーは支払いプロセスに進みます。次に、支払いプロセスが完了すると、MySQL データベースに登録情報が送信されるサイトにリダイレクトされます。

ただし、ユーザーがデータが送信された確認ページに戻ると、セッション変数は完全に空白になります。すべての変数をエコーし​​ましたが、そこには何もありません。

どこが壊れているかをテストするために、フォームに入力した後に表示されるページに、情報が SQL サーバーにダンプされる確認ページに直接リンクするリンクを配置しました。リンクをリンクすると、情報はまだそこにあります。ただし、同じ URL をアドレス バーに貼り付けた場合 (つまり、リンクを使用していない場合)、変数は空白になります。

したがって、この時点で、ページにリンクしてクリックすると変数が正常であるのに、同じ URL をアドレスバーに貼り付けてリンクをクリックしないと変数が正常に動作しない理由がわかりません。セッションはすべてのページで開始され、すべてが同じドメイン名にあります。

何か助けて?!

===== 編集 ===== テストコード (大まかなアイデアを与えるため)

セッション変数の設定方法。session_start(); 関数は、他のページ間で継続するために、このサイトのすべてのページの読み込み時に呼び出されます。

$storedVars = array(1 => $name, $email, $state, $year, $make, $model, $generation, $color, $now, $paymentType);
$_SESSION['registration']=$storedVars;

情報がデータベースに送信される PayPal の後の確認ページで、次のコードが実行されます (再度、session_start(); が既に呼び出されています)。

$storedVars = $_SESSION['registration'];
$name = $storedVars[1];
$email = $storedVars[2];
$state = $storedVars[3];
$year = $storedVars[4];
$make = $storedVars[5];
$model = $storedVars[6];
$generation = $storedVars[7];
$color = $storedVars[8];
$now = $storedVars[9];

10 番目の配列変数 paymentType は、フォームが送信された後のページにのみ使用されるため、この時点では必要ありません)。

Paypal の手順を実行した後、またはフォームに入力した後に正しい URL をアドレス バーに貼り付けた後、確認ページでこれらの変数がエコーされると、何も表示されません。ただし..フォームが送信された後に続くデータ検証ページのリンクをクリックすると、変数はまだそこにあります。

4

1 に答える 1

2

あなたの最後のコメントは、あなたのセッションがhttp://yoursite.com/に設定されていて、PayPal に送信している戻り URL がhttp://www.yoursite.com/ (またはその逆) であると信じさせます。「www」は実際にはベース ドメインのサブドメインであり、ブラウザに関する限り別のホストと見なされます。

簡単に言うと、paypal でトークンを設定するときは、次のリターン URL を使用します。

$_SERVER["HTTP_HOST"] . "/Path/To/PaypalReturnPage.php"
于 2012-07-22T19:35:36.077 に答える