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 關注
- 269 瀏覽
添加回答
舉報