查找用户所在的最后一页

时间:2013-10-05 20:10:09

标签: php session

我有四个页面:cart.phpcheckout1.phpcheckout2.phpcheckout3.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.php并浪费SQL空间)。如果购物车是空的,我会在每个页面上重定向到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']或类似的东西,但我的理解是并非每个浏览器都支持这一点,并且它没有给出引用页面的简洁位置(例如,会说用户来自{ {1}}与www.site.com

1 个答案:

答案 0 :(得分:3)

您可以使用以下简单方法:

1-创建一个名为步骤

的会话变量

2-一旦用户从一步移动到另一步,将变量增加1

每页顶部的

3-如果步骤变量对该页面有效,则检查步骤变量

例如:

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']);