首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP --如何保存cookie并在以后引用它

PHP --如何保存cookie并在以后引用它
EN

Stack Overflow用户
提问于 2013-12-14 14:02:44
回答 2查看 1.5K关注 0票数 0

我在编写脚本..。我需要一些东西来保存会话ID (MD5散列,RAND-1,1000)变量。我希望能够在另一页中从他们的电脑中回忆起这个曲奇。但我只想让它掉一个饼干,在10分钟内到期。

我正在编写一个脚本,用户可以在其中购买东西,所以一旦他们订购了什么东西,比如说VIP包1,它就会检查它是否出售(在我的开关声明中),它将返回URL来订购他们的商品--我想要这个cookie,这样如果他们要去订购什么东西,并且他们已经不活动了15分钟,cookie将被删除,访问下一页将是不可能的。

我的表格如下:

代码语言:javascript
复制
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>'; }

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-14 14:18:52

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

代码语言:javascript
复制
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的地方都要更新的麻烦。

要称之为此,只需执行以下操作:

代码语言:javascript
复制
$cookie = new CookieStorage();
$cookie->set($key,$value);

并检索:

代码语言:javascript
复制
$cookie->get($key);
票数 0
EN

Stack Overflow用户

发布于 2013-12-14 14:12:08

您只需要使用setcookie函数来设置cookie。这里有更多的信息

一个10分钟到期的例子

代码语言:javascript
复制
setcookie("name", $value, time()+600);  /* expires in 10 minutes */
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20584237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档