微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – ZF2读取HTTP Cookie

我有一个文件(caller.PHP),它在HTTP响应中创建一个cookie,然后重定向到ZF2应用程序(LoginController)中的控制器.

caller.PHP

setcookie("_ga", "GA1.2.1622977711.1433494392");
setcookie("_gat", "1");

header("Location: http://gnsys.local/publico/login");

的LoginController

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\viewmodel;
use Zend\Http\Response;

class LoginController extends BasePublicController{

public function indexAction(){

    $response = $this->getResponse();

    foreach ($response->getHeaders() as $header) {
        echo "Campo: " . $header->getFieldName() . ' with value ' . $header->getFieldValue() . "<br />";
    }


    return new viewmodel();
}
}

调用LoginController时,我没有从HTTP响应获得任何头.

我究竟做错了什么?为什么我无法从http响应头读取任何值?如何从HTTP响应中读取所有标头?

如果我做我想要的但只使用PHP,LoginController被一个名为login.PHP文件更改为以下代码

foreach (getallheaders() as $name => $value) {
    echo "$name: $value</br>";
}

这段代码工作正常,给我我想要的东西.如何在Zend Framework 2中获得相同的内容

解决方法:

您应该从请求中提取标头,但不是响应:

foreach ($this->getRequest()->getHeaders() as $header) {
   echo 'Campo: ' . $header->getFieldName() . ' with value ' . $header->getFieldValue() . '<br />';
}

获取cookie,请使用下一个

foreach ($this->getRequest()->getCookie() as $name => $value) {
    echo 'Campo: ' . $name . ' with value ' . $value . '<br />';
}

从行动中设置cookie:

public function callerAction()
{
    $cookie = new \Zend\Http\Header\SetCookie();
    $cookie->setName('foo')
        ->setValue('bar')
        ->setDomain('gnsys.local')
        ->setPath('/')
        ->setHttponly(true);

    /** @var \Zend\Http\Response $response */
    $response = $this->getResponse();
    $response->getHeaders()->addHeader($cookie);

    return $this->redirect()->toUrl('/publico/login');
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐