gpt4 book ai didi

php - ZF2 读取 HTTP Cookie

转载 作者:可可西里 更新时间:2023-11-01 00:42:00 25 4
gpt4 key购买 nike

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

caller.php

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

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

登录 Controller

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 响应中获得任何 header 。

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

如果我做我想做的但只使用 PHP,则 LoginController 会被一个名为 login.php 的文件更改,该文件包含以下代码:

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

这段代码运行良好,可以满足我的需求。我怎样才能在 Zend Framework 2 中获得相同的内容?

最佳答案

您应该从请求中提取 header ,而不是响应:

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

要仅获取 cookie,请使用 next:

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

关于php - ZF2 读取 HTTP Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33268494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com