Heim  >  Artikel  >  Backend-Entwicklung  >  Über die Verwendung von Cookies in Laravel5

Über die Verwendung von Cookies in Laravel5

不言
不言Original
2018-06-13 11:35:512076Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung von Cookies in Laravel5 vorgestellt. Freunde, die es benötigen, können darauf verweisen

Als ich heute Cookies im Laravel-Framework verwendete, stieß ich auf einige Probleme und war mehr als die Hälfte verwirrt Während dieser Zeit habe ich die Implementierungsklasse von Cookie studiert und auch viele Informationen auf der Website gefunden, einschließlich Fragen und Antworten. Discovery hat das Problem nicht gelöst. Die Antworten im Internet werden plagiiert und voneinander weiterveröffentlicht. Tatsächlich ist es nutzlos. Zum Glück habe ich am Ende eine Lösung gefunden. Im Sinne der Verantwortung für die große Zahl der Laravel-Enthusiasten und -Entwickler und gleichzeitig hoffe ich, dass jeder Umwege bei der Verwendung von Cookies vermeidet. Hier werde ich die Einstellungs- und Lesemethoden von Cookies in Laravel für alle beisteuern kritisieren und korrigieren.

Übersicht

Das Hinzufügen von Cookies ist eigentlich sehr einfach, bevor Sie die Methode verwenden Sie müssen die Cookie-Fassade mit IlluminateSupportFacadesCookie einführen, damit die Cookie-Einstellung abgeschlossen werden kann (natürlich kann sie automatisch über den Namespace geladen werden, ohne dass eine direkte Cookie-Verwendung erforderlich ist).

Wie können wir jedoch den Cookie-Wert erhalten, nachdem wir ihn festgelegt haben? Entwickler, die nach verwandten Fragen gesucht haben, müssen wissen, dass die Antworten im Internet immer wie folgt lauten: Cookie::get(), und einige enthalten sogar den Code:

Cookie::make('test', 'hello, world', 10);
echo Cookie::get('test');

Wenn Sie ähnlichen Antworten zum Testen von Cookies folgen, werden Sie definitiv feststellen, dass der für das Cookie festgelegte Wert immer null ist. Wenn mehrere Tests fehlschlagen, werden Sie sich fragen, ob mit Ihrem Laravel-Framework etwas nicht stimmt!

Tatsächlich müssen Sie bei der Verwendung von Cookies im Laravel-Framework Antwort und Anfrage erwähnen. Entwickler, die häufig Browser zum Debuggen von Programmen verwenden, haben möglicherweise bemerkt, dass sowohl die Antwortheader als auch die Anforderungsheader der Anforderungsadresse Cookie-Informationen enthalten. Richtig, wenn Sie Cookies im Laravel-Framework verwenden, können Sie auf Response und Request nicht verzichten. Lassen Sie uns die richtige Methode zum Hinzufügen und Abrufen von Cookies vorstellen.

So verwenden Sie 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-Speicher-Array:

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'));
});

Lassen Sie uns im Detail über die Cookies von Laravel sprechen

Hinzufügen Cookie

Zum Beispiel müssen wir im Controller den Cookie-Wert „Hallo, Laravel“ festlegen und die Gültigkeitsdauer auf 10 Minuten festlegen. Es wird empfohlen, hier die Cookie-Warteschlangenmethode Cookie::queue() zu verwenden, da das Cookie automatisch zur Antwort hinzugefügt wird:

<?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;);
 }
}

Sehen Sie, ob dort Es sind zu viele Antwortheader vorhanden. Es wird ein Set-Cookie-Datensatz erstellt. Wenn Sie Response verwenden, können Sie natürlich direkt die withCookie()-Methode in Response verwenden, um Cookies zur Antwort hinzuzufügen:

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);
}

Um eine dauerhafte Funktion festzulegen Für Cookie-Werte, die nicht ablaufen, können Sie die Methode Cookie::forever() verwenden:

Cookie::forever(&#39;test&#39;, &#39;Hello, Laravel&#39;);

Cookie selbst stellt diese Methode nicht bereit, weil Die Cookie-Fassade wird durch IlluminateCookieCookieJar dargestellt, damit Cookie die Methoden in dieser Klasse verwenden kann. Hier ist der Quellcode der queue()-Methode beigefügt:

/**
* 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;
}

Aus dem Quellcode können wir erkennen, dass die queue()-Methode tatsächlich die Marke ist ()-Methode aufgerufen.

Hinweis: Einige Freunde haben die Methode zum Einfügen von Cookies in die zurückgegebene Ansicht return view('index')->withCookie($cookie) vorgeschlagen, diese ist jedoch in persönlichen Tests ungültig. Es wird empfohlen, queue()

zu verwenden, um Cookie zu erhalten

Wie wir in der Übersicht erwähnt haben, ist die Verwendung von Cookies untrennbar mit Response verbunden und Anfrage. Es gibt zwei Ebenen, um den Wert von Cookies zu ermitteln: eine ist der Server und die andere ist der Client. Wenn Sie möchten, dass der Server den Cookie-Wert erhält, müssen Sie ihn aus der Anfrage abrufen:

public function index(Request $request)
{
 $cookie = $request->cookie(&#39;test&#39;);
 dump($cookie);
}

Wenn Sie den Wert aller Cookies erhalten möchten, Sie können keine Parameter verwenden. Methode:

public function index(Request $request)
{
 $cookies = $request->cookie();
 dump($cookies);
}

Greifen Sie erneut auf die Adresse zu. Wir erhalten ein Array aller Cookie-Werte, einschließlich des Tests, den wir gerade festgelegt haben:

array:3 [▼
 "XSRF-TOKEN" => "CDSXUUYYHJHGDDFGHJAxPNNsVxLHGTRYUGJ"
 "laravel_session" => "870a775gthhgef0b9f357edc6r6587878999876556"
 "test" => "Hello, Laravel"
]

Wenn wir es auf dem Client verwenden müssen, ist es nicht der Fall, den Wert von Cookie zu erhalten. Zunächst einmal sind die Daten, die wir an den Client übermitteln, indem wir mit Cookie($cookie) antworten, keine Zeichenfolge, sondern ein Cookie-Objekt:

Cookie {#1490 ▼
 #name: "test"
 #value: "Hello, Laravel"
 #domain: null
 #expire: 1493791460
 #path: "/"
 #secure: false
 #httpOnly: true
}

um das zu erhalten Wert, die Cookie-Klasse stellt eine getValue()-Methode bereit, um ihn abzurufen. Bearbeiten Sie beispielsweise den Code in der Vorlage:

<p>{{ $cookie->getValue() }}</p>

Wenn Sie die Seite erneut aktualisieren, erhalten Sie den eingestellten Test-Cookie-Wert:

Hallo, Laravel

Cookies löschen

Die Methode zum Löschen von Cookies ist relativ einfach wie das Setzen von Cookies, außer dass Die Ablaufzeit wird auf die Vergangenheit gesetzt. Hier müssen Sie auch Cookie zur HTTP-Antwort hinzufügen, indem Sie die Methode make() oder discover() verwenden:

$cookie = Cookie::forget(&#39;test&#39;);
return Redirect::route(&#39;index&#39;)->withCookie($cookie);

Das Obige ist der gesamte Inhalt davon Ich hoffe, dass er für das Lernen aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Verwenden von Passport zur Implementierung der Auth-Authentifizierung in Laravel5.5

Über die Verwendung des Datums- und Zeitverarbeitungspakets Carbon in Laravel

Das obige ist der detaillierte Inhalt vonÜber die Verwendung von Cookies in Laravel5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn