Codeigniter 4 cookie 问题无法设置

这是我的控制器代码。我无法在 Codeigniter 4 中设置和获取 cookie。


helper('cookie');

$this->response->set_cookie('forgetpwd',$token, time() + (3600),"/",site_url());

print_r($this->request->get_cookie('forgetpwd'));

die();


神不在的星期二
浏览 155回答 3
3回答

潇湘沐

不要使用die(),因为这样就不会设置 cookie。让该方法返回,以便 CI 可以输出 cookie 和标头。你不需要这个助手,不要加载它。site_url()不会产生您应该使用的字符串。它包括协议,即https://example.com当您只应使用“example.com”时。您将域和路径参数颠倒了,正如其他人所说,调用是setCookie()在$this->response->setCookie('forgetpwd', $token, 3600, example.com);expire参数可以是你想要的寿命(以秒为单位)。该setCookie()方法将为time()您添加。我没有提供路径参数,因为您需要默认值“/”。

哆啦的时光机

直到下一次加载 cookie 应该可见的页面时,cookie 才会变得可见。要测试 cookie 是否已成功设置,请在 cookie 过期之前检查下一个加载页面上的 cookie。过期时间通过 expires 参数设置。调试 cookie 存在的一个好方法是简单地调用 print_r($_COOKIE);。

慕码人8056858

这段代码对我有用。我从请求中获取 cookie 并将其设置在响应中。(记住在处理之前验证用户输入)<?phpnamespace App\Controllers;&nbsp;&nbsp;use Config\Services;class Home extends BaseController {&nbsp; &nbsp; public function setLang($lang = ""){&nbsp; &nbsp; &nbsp; &nbsp; // remember filter your inputs&nbsp; &nbsp; &nbsp; &nbsp; Services::response()->setCookie('lang', $lang);&nbsp; &nbsp; &nbsp; &nbsp; echo("<script>location='/index';</script>");&nbsp; &nbsp; }&nbsp; &nbsp; public function index(){&nbsp; &nbsp; &nbsp; &nbsp; //default value&nbsp; &nbsp; &nbsp; &nbsp; $lang = "es";&nbsp; &nbsp; &nbsp; &nbsp; //if empty return NULL.&nbsp; &nbsp; &nbsp; &nbsp; $tmpLang = Services::request()->getCookie("lang");&nbsp; &nbsp; &nbsp; &nbsp; if(in_array($tmpLang, ["es", "en", "ja", "pt"])){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $lang = $tmpLang;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; //show cookie value&nbsp; &nbsp; &nbsp; &nbsp; echo $lang&nbsp; &nbsp; }}?>
打开App,查看更多内容
随时随地看视频慕课网APP