You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 中如何检查Cookie是否存在?

Laravel 8 Cookie存在判断及逻辑修复方案

你现有代码的核心错误源于对Laravel Cookie::has() 方法的返回值理解有误:

$user_id = Cookie::has('u_id'); // 此处返回布尔值 true/false,不是u_id的实际存储值
if($user_id === 1) // 布尔值与数值1做全等判断永远为假,所以逻辑始终不生效

1. 仅判断Cookie是否存在的正确写法

如果只需要确认u_id这个Cookie是否被设置,直接用Cookie::has()的返回值做布尔判断即可:

public function add_to_fav($product_id){
    if(Cookie::has('u_id')){
        // Cookie存在的业务逻辑,注意原代码的$is_already_added需要提前赋值才能返回
        return $is_already_added;
    } else{
        return "Login First";
    }
}

2. 需同时判断Cookie存在且值等于1的写法

如果你的业务逻辑是要求u_id存在且对应值为1,要先判断存在再调用Cookie::get()取实际值校验:

public function add_to_fav($product_id){
    if(Cookie::has('u_id') && Cookie::get('u_id') == 1){
        return $is_already_added;
    } else{
        return "Login First";
    }
}

常见注意事项

  • Laravel默认所有通过框架设置的Cookie都会加密,如果你这个u_id是前端JS设置的未加密Cookie,需要在app/Http/Middleware/EncryptCookies.php的$except数组里排除u_id,否则Cookie::has()会识别失败:
    // app/Http/Middleware/EncryptCookies.php
    protected $except = [
        'u_id',
        // 其他不需要加密的Cookie名
    ];
    
  • 原代码里返回的"$is_already_added"不需要加双引号包裹,直接返回变量本身即可,避免不必要的字符串解析开销。

内容的提问来源于stack exchange,提问作者Pooja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:15:03