0

cart.phpcheckout1.php、 、 の4 つのページがcheckout2.phpありcheckout3.phpます。それらの機能の概要は次のとおりです。

cart.php //display items and quantities in cart with option for coupon code
checkout1.php //input of user address
checkout2.php //order summary
checkout3.php //order placed into SQL

物は 経由$_SESSIONでカートに保管されますが、各ページ間で$_POST情報を次から次へと移動するために使用しています。私の懸念は、たとえば、ユーザーがwww.site.com/checkout2.phpアドレスバーから移動しただけで、空のページが表示されるためです (ただし、引き続きアクセスしてcheckout3.phpSQL スペースを無駄にすることができます)。index.phpカートが空の場合にリダイレクトする各ページで(たとえばcheckout2.php、空のカートのアドレスバーに入力すると、続行できるコードが表示されません)、コンテンツがある$_SESSION場合ではなく$_POST、ユーザーが物事を台無しにするのを防ぐ方法がわかりません。

のようなものを使用するかもしれないと思いisset()ましたが、(疑似コード) の行に沿って何かをしたいと思います:

//on checkout2.php
if (previouspage != "./checkout1.php") {
    echo "There was an error.";
} else {
    //display correct page
}

それらの線に沿って存在する$_SERVER['HTTP-REFERER']か何かがあることは知っていますが、すべてのブラウザーがこれをサポートしているわけではなく、参照ページの簡潔な場所を提供していないことを理解しています (たとえば、ユーザーがwww.site.comvs.から来たと言うでしょうwww.site.com/checkout1.php) 。

4

1 に答える 1

3

次のような簡単なアプローチを使用できます。

1- stepsというセッション変数を作成します

2- ユーザーがあるステップから別のステップに移動したら、変数を 1 増やします。

3- 各ページの上部で、steps 変数がそのページで有効かどうかを確認します

例えば:

Cart.php

$_SESSION['steps'] = 1;

checkout.php

if(isset($_SESSION["steps"]) && $_SESSION["steps"] == 1){
    //die or redirect
}

//once all the logic execute properly
$_SESSION['steps'] = 2;

checkout2.php

if(isset($_SESSION["steps"]) && $_SESSION["steps"] == 2){
    //die or redirect
}

//once all the logic execute properly
$_SESSION['steps'] = 3;

checkout3.php

if(isset($_SESSION["steps"]) && $_SESSION["steps"] == 3){
    //die or redirect
}

//once all the logic execute properly
unset($_SESSION['steps']);
于 2013-10-05T20:26:49.017 に答える