如何在Phalcon PHP中管理cookie

时间:2016-02-11 11:06:50

标签: php session cookies phalcon

我有一个用PhalconPHP编写的应用程序。我使用phalcon命令行工具来构建东西。我想为用户实现“记住我”选项。但是,如果我理解正确,PhalconPHP会创建具有唯一会话ID和加密(加密部分,我喜欢)的cookie。因此,每当用户会话消失时,我都无法访问cookie。我怎样才能解决这个问题?

我实际上不会销毁会话,我只是在设置会话和cookie后使用cmd + Q退出浏览器。我试过加密而没有。

更清楚:我没有任何错误。只是找不到cookie回来。在关闭浏览器并再次打开后,我发现“没有找到cookie”。

作为代码示例,下面是我尝试实现此功能的方法;

我的services.php

/**
 * Start the session the first time some component request the session service
 */
 $di->setShared('session', function () {
    $session = new SessionAdapter();
    //$session->setId('crowgadgets'); 
    $session->start();

    return $session; 
 });


/**
* Set crypt for cookie encryption
*/

$di->set('crypt', function () {
    $crypt = new Crypt();

    $crypt->setKey('-#1+%&/k5l6&olr$'); // Use your own key!

    return $crypt;
});


/**
* Set cookie universal
*/
$di->setShared('cookies', function () {
    $cookies = new Cookies();

    //$cookies->useEncryption(true);

    return $cookies;
});

在控制器中设置cookie;

$this->cookies->set('remember-me', $auth['id'], time() + 15 * 86400);

在控制器中获取cookie;

if ($this->cookies->has('remember-me')) {
    $user_id = (string) $this->cookies->get('remember-me');
} else {
    echo "no cookie found";
    die();
}

1 个答案:

答案 0 :(得分:3)

cookie的语法:

setcookie(name,value,expire,path,domain,secure,httponly);

关于path参数:

  

可选。指定cookie的服务器路径。如果设置为"/",则为   cookie将在整个域中可用。如果设置为" / php /",   cookie只能在php目录和所有内容中使用   php的子目录。默认值是当前目录   cookie正在

中设置

默认情况下,使用当前路径创建Cookie,直到您将其更改为在任何其他路径上保存Cookie或'/'

  

可在其上使用cookie的服务器上的路径。如果   设置为' /',Cookie将在整个域中可用。如果   设置为' / foo /',Cookie只能在/ foo /中使用   目录和所有子目录,例如/ foo / bar / of domain。该   默认值是正在设置cookie的当前目录   英寸

您可以从以下链接中详细了解pathcookies

http://php.net/manual/en/function.setcookie.php

http://www.w3schools.com/php/php_cookies.asp

http://www.tutorialspoint.com/php/php_cookies.htm