Laravel5におけるCookieの使用について

不言
リリース: 2023-03-31 22:14:02
オリジナル
2129 人が閲覧しました

この記事はLaravel5でのCookieの使い方を中心に紹介していますので、必要な方は参考にしてください

今日LaravelフレームワークでCookieを使ったところ、いくつか問題が発生し半分以上混乱しました。この間、Cookie の実装クラスを勉強し、Web サイトで Q&A などの多くの情報を見つけました。 Discovery では問題は解決されませんでした。インターネット上の回答は相互に盗用され、転載されています。実際、それは何の役にも立ちません。幸いなことに、最終的には解決策を見つけました。膨大な数の Laravel 愛好家や開発者に責任を負うと同時に、皆様が Cookie を使用する際に寄り道をしないように願っています。ここでは、皆様に向けて Laravel における Cookie の設定と読み取り方法を提供します。批判して修正する。

概要

Cookie の追加は実際には非常に簡単です。メソッドを使用する前に Cookie::make() を使用します。 、Cookie の設定を完了するには、Illuminate\Support\Facades\Cookie; を使用して Cookie ファサードを導入する必要があります (もちろん、\Cookie の直接使用を導入しなくても、名前空間を通じて自動的に読み込むことができます)。

しかし、設定後に Cookie の値を取得するにはどうすればよいでしょうか?関連する質問を検索した開発者は、インターネット上の答えは常に Cookie::get() であり、中にはコード

Cookie::make('test', 'hello, world', 10);
echo Cookie::get('test');
ログイン後にコピー

が含まれていることを知っておく必要があります。 #この同様の回答に従って Cookie をテストすると、Cookie に設定される値が常に null であることがわかります。複数のテストが失敗した場合、Laravel フレームワークに何か問題があるのではないかと疑うでしょう。

実際、Laravel フレームワークで Cookie を使用する場合は、Response と Request について言及する必要があります。プログラムのデバッグにブラウザをよく使用する開発者は、リクエスト アドレスのレスポンス ヘッダーとリクエスト ヘッダーの両方に Cookie 情報が含まれていることに気づいたかもしれません。そう、LaravelフレームワークでCookieを使うならResponseとRequestが欠かせないのです。 正しいCookieの追加方法と取得方法を紹介しましょう。

Cookie::make()、Cookie::forever()、Cookie::get() の使用方法:

Route::get('cookieset', function()
{
 $foreverCookie = Cookie::forever('forever', 'Success');
 $tempCookie = Cookie::make('temporary', 'Victory', 5);//参数格式:$name, $value, $minutes
 return Response::make()->withCookie($foreverCookie)->withCookie($tempCookie);
});
Route::get('cookietest', function()
{
  $forever = Cookie::get('forever');
  $temporary = Cookie::get('temporary');
  return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works'));
});
//先上一个demo写入cookie
$cookie = \Cookie('cookie_name', 'value', 5);
  $data = ['title'=>'hello world'];
  return \response()
   ->view('home.hello', $data)
   ->cookie($cookie);
ログイン後にコピー

2. Cookie ストレージ配列:

Route::get('cookieset', function()
{
 $user_info = array('name'=>'laravel','age'=>12);
 $user = Cookie::make('user',$user_info,30);
 return Response::make()->withCookie($user);
});
Route::get('cookietest', function()
{
 dd(Cookie::get('user'));
});
ログイン後にコピー

laravel の Cookie について詳しく話しましょう

Add Cookie

#たとえば、コントローラーに「Hello, Laravel」という Cookie 値を設定し、有効期間を 10 分に設定する必要があります。 Cookie は自動的に応答に追加されるため、ここでは Cookie キュー メソッド Cookie::queue() を使用することをお勧めします。応答ヘッダーが多すぎます set-cookie レコードが作成されます。もちろん、Response を使用している場合は、Response で withCookie() メソッドを直接使用して、レスポンスに Cookie を追加できます。有効期限が切れていない Cookie 値の場合は、Cookie::forever() メソッドを使用できます。

<?php
namespace App\Http\Controllers;
use Cookie;
use App\Http\Controllers\Controller;
class DashboardController extends Controller
{
 /**
  * Show the application index.
  *
  * @return Response
  */
 public function index()
 {
  Cookie::queue(&#39;test&#39;, &#39;Hello, Laravel&#39;, 10);//如果不适用上面的use Cookie,这里可以直接调用 \Cookie
  return view(&#39;index&#39;);
 }
}
ログイン後にコピー

Cookie 自体はこのメソッドを提供しません。 Cookieは\Illuminate\Cookie\CookieJarで構成されており、Cookieはこのクラスのメソッドを利用することができます。ここに queue() メソッドのソース コードを添付します。

public function index()
{
 //$response = new Response();
 $cookie = Cookie::make(&#39;test&#39;, &#39;Hello, Laravel&#39;, 10);
   return \Response::make(&#39;index&#39;)->withCookie($cookie);
 //return $response->make(&#39;index&#39;)->withCookie($cookie);
}
ログイン後にコピー

ソース コードから、queue() メソッドが実際には make であることがわかります。 () メソッドが呼び出されます。

注: 一部の友人は、返されたビューに Cookie を挿入する方法を提案しました。

return view('index')->withCookie($cookie)

個人テストは無効です。 queue() を使用することをお勧めします

Get Cookie

概要で述べたように、Cookie の使用は応答と切り離すことができません。リクエスト。 Cookie の値を取得するには 2 つのレベルがあり、1 つはサーバー、もう 1 つはクライアントです。サーバーに Cookie の値を取得させたい場合は、リクエストから取得する必要があります:

Cookie::forever(&#39;test&#39;, &#39;Hello, Laravel&#39;);
ログイン後にコピー

すべての Cookie の値を取得したい場合は、パラメータは使用できません。メソッド:

/**
* Queue a cookie to send with the next response.
*
* @param mixed
* @return void
*/
public function queue()
{
 if (head(func_get_args()) instanceof Cookie) {
  $cookie = head(func_get_args());
 } else {
  $cookie = call_user_func_array([$this, &#39;make&#39;], func_get_args());
 }
 $this->queued[$cookie->getName()] = $cookie;
}
ログイン後にコピー

アドレスに再度アクセスすると、先ほど設定したテストを含むすべての Cookie 値の配列が取得されます。

# #
public function index(Request $request)
{
 $cookie = $request->cookie(&#39;test&#39;);
 dump($cookie);
}
ログイン後にコピー

クライアントで使用する必要がある場合、Cookie の値を取得することはできません。まず第一に、withCookie($cookie) に応答してクライアントに送信するデータは文字列ではなく、Cookie オブジェクトです。値を取得するには、Cookie クラスが getValue() メソッドを提供します。たとえば、テンプレート内のコードを編集します:

#

public function index(Request $request)
{
 $cookies = $request->cookie();
 dump($cookies);
}
ログイン後にコピー

ページを再度更新すると、設定されたテスト Cookie 値を取得します:

Hello, Laravel

Clear Cookie

Cookie をクリアする方法は、Cookie を設定する場合と比較的簡単です。ただし、次の点が異なります。有効期限が過去に設定されています。ここでは、make() メソッドまたは remember() メソッドを使用して、HTTP レスポンスに Cookie を追加する必要もあります。

array:3 [▼
 "XSRF-TOKEN" => "CDSXUUYYHJHGDDFGHJAxPNNsVxLHGTRYUGJ"
 "laravel_session" => "870a775gthhgef0b9f357edc6r6587878999876556"
 "test" => "Hello, Laravel"
]
ログイン後にコピー

上記は、この内容全体です。この記事が皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

Passport を使用して Laravel5.5 に Auth 認証を実装する

Laravelにおける日時処理パッケージCarbonの使用について

以上がLaravel5におけるCookieの使用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート