为了账号安全,请及时绑定邮箱和手机立即绑定

Codeigniter 4 cookie 问题无法设置

Codeigniter 4 cookie 问题无法设置

PHP
神不在的星期二 2023-04-21 16:57:22
这是我的控制器代码。我无法在 Codeigniter 4 中设置和获取 cookie。helper('cookie');$this->response->set_cookie('forgetpwd',$token, time() + (3600),"/",site_url());print_r($this->request->get_cookie('forgetpwd'));die();
查看完整描述

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()您添加。

我没有提供路径参数,因为您需要默认值“/”。


查看完整回答
反对 回复 2023-04-21
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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


查看完整回答
反对 回复 2023-04-21
?
慕码人8056858

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

    }

}


?>


查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信