如何在 Laravel 5.4 中设置 Cookie?

3

我在 Laravel 5.4 中有这个函数,但是无法从 cookie 中获取任何内容。

Cookie::queue('currentLang', 'heb', 999999999);

echo  $request->cookie('currentLang');

但是我得到了一些长字符串而不是我设置的内容。

1
长字符串是什么?它们是“肺石棉沙肺病”吗? - user6250760
你是把这个放在控制器的构造函数里吗?Cookie只有在之后才会被解密,所以你必须自己解密它们。https://laravel.io/forum/09-07-2015-cookies-encrypted - Zachary Weixelbaum
3个回答

5

Laravel有一个cookie助手!

/**
 * Create a new cookie instance.
 *
 * @param  string  $name
 * @param  string  $value
 * @param  int     $minutes
 * @param  string  $path
 * @param  string  $domain
 * @param  bool    $secure
 * @param  bool    $httpOnly
 * @return \Symfony\Component\HttpFoundation\Cookie
 */
function cookie($name = null, $value = null, $minutes = 0, $path = null, $domain = null, $secure = false, $httpOnly = true)
{
    $cookie = app(CookieFactory::class);

    if (is_null($name)) {
        return $cookie;
    }

    return $cookie->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly);
}

然后使用:

Cookie::get('$name')

我可以把这个函数放在哪里? - oded
1
只需将Cookie::queue替换为cookie('name', 'value', 99999)。该函数本身存在于Laravel的helpers.php中,因此您可以在任何地方使用它。 - pollux
我仍然得到一些哈希长行。 - oded

4
use Illuminate\Support\Facades\Cookie;

Cookie::queue('currentLang', 'heb', 999999999);

echo Cookie::get('currentLang');

0

我也遇到了相同的问题。它返回 null,所以我用 Javascript 和 PHP 做了这件事,像这样:

使用 Javascript 在 cookie 中设置值

function createCookie(name, value, days) {
        var expires;
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days*24*60*60*1000));
            expires = "; expires=" + date.toGMTString();
        }
        else {
            expires = "";
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    }

使用PHP检索cookie

$_COOKIE["popupId"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接