PHP - 如何保存cookie并稍后能够引用它

时间:2013-12-14 14:02:44

标签: php cookies

我正在编写脚本..而且我需要能够保存会话ID(MD5哈希,兰德1,1000)变量的东西。我希望能够在另一个页面中从他们的计算机中回忆起这个cookie。但是我只希望它丢掉一个cookie,它会在10分钟后到期。

我正在编写一个用户可以购买东西的脚本,我想要它,所以一旦他们订购了东西,让我们说VIP套餐1,它会检查它是否有待售(在我的交换声明中)并且它将返回用于订购商品的网址 - 我想要这个Cookie,这样如果他们即将订购某些商品,并且他们已经处于非活动状态15分钟,那么Cookie将会被删除,并且无法访问下一页。

我的表格如下:

if(isset($_POST['order']))
        {
    switch($_POST['order']) {
    case NULL:
        echo'<b>No order was selected.</b>';
        break;

    case 'vip1':
        echo 'You are ordering VIP 1!';
        break;

    case 'vip2':
        echo 'You are ordering VIP 2!';
        break;

    case 'vip3':
        echo 'You are ordering VIP 3!';
        break;

    case 'vip4':
        echo 'This is test 3!';
        break;
            } 
                } else { echo '<form action="shop.php" method="post">
    <input type="radio" name="order" value="vip1">VIP Package 1<br />
    <input type="radio" name="order" value="vip2">VIP Package 2<br />
    <input type="radio" name="order" value="vip3">VIP Package 3<br />
    <!--<input type="hidden" name="order"/>-->
    <input type="submit" value="Submit">
    </form>'; }

现在,在echo中,将包含购买该项目的链接。但我想在某个地方生成一个cookie,当他们访问该页面时,一旦他们选择了要购买的商品,它就会给他们购买它的URL。当他们访问该URL(checkout.php)时,我希望它检查他们是否有一个有效的cookie(他们不需要检查ID,只是为了看看他们是否有来自我们网站的实际cookie,其中包含购买的ID) - 以及cookie的原因。这有可能吗?

2 个答案:

答案 0 :(得分:0)

您只需使用setcookie函数设置cookie即可。 More information here

10分钟到期的示例

setcookie("name", $value, time()+600);  /* expires in 10 minutes */

答案 1 :(得分:0)

您可以创建一个类实例来管理您的Cookie:

class CookieStorage {
    protected $cookie;

    function __construct() {}

    //The setter function for the cookie
    public function set($key,$value,$expire=900) {
        //This will only update the cookie IF it is not already there.
        if(!$this->get($key)) {
            set_cookie($key,$value,$expire);
        }
    }

    //The getter function for the cookie
    public function get($key) {
        if(isset($_COOKIE[$key])) {
            $this->cookie = $_COOKIE[$key];
            return $this->cookie;
        } else {
            return false;
        }
    }

}

你可以在课堂外通过调用$_COOKIE[$key]来调用该值来实现这一点,但这样做的好处是你有一个可以参考的工作实例,你可以取消访问全局变量$ _COOKIE,您可以在一个地方添加其他逻辑。这样可以省去更新检查cookie的每个地方的麻烦。

要拨打此电话,您只需执行以下操作:

$cookie = new CookieStorage();
$cookie->set($key,$value);

并检索:

$cookie->get($key);