3 回答
TA贡献1816条经验 获得超6个赞
不要使用die()
,因为这样就不会设置 cookie。让该方法返回,以便 CI 可以输出 cookie 和标头。
你不需要这个助手,不要加载它。
site_url()
不会产生您应该使用的字符串。它包括协议,即https://example.com
当您只应使用“example.com”时。
您将域和路径参数颠倒了,正如其他人所说,调用是setCookie()
在
$this->response->setCookie('forgetpwd', $token, 3600, example.com);
expire参数可以是你想要的寿命(以秒为单位)。该setCookie()
方法将为time()
您添加。
我没有提供路径参数,因为您需要默认值“/”。
TA贡献1779条经验 获得超6个赞
直到下一次加载 cookie 应该可见的页面时,cookie 才会变得可见。要测试 cookie 是否已成功设置,请在 cookie 过期之前检查下一个加载页面上的 cookie。过期时间通过 expires 参数设置。调试 cookie 存在的一个好方法是简单地调用 print_r($_COOKIE);。
TA贡献1803条经验 获得超6个赞
这段代码对我有用。我从请求中获取 cookie 并将其设置在响应中。(记住在处理之前验证用户输入)
<?php
namespace App\Controllers;
use Config\Services;
class Home extends BaseController {
public function setLang($lang = ""){
// remember filter your inputs
Services::response()->setCookie('lang', $lang);
echo("<script>location='/index';</script>");
}
public function index(){
//default value
$lang = "es";
//if empty return NULL.
$tmpLang = Services::request()->getCookie("lang");
if(in_array($tmpLang, ["es", "en", "ja", "pt"])){
$lang = $tmpLang;
}
//show cookie value
echo $lang
}
}
?>
- 3 回答
- 0 关注
- 184 浏览
添加回答
举报