À propos de l'utilisation des cookies dans Laravel5

不言
Libérer: 2023-03-31 22:14:02
original
2114 Les gens l'ont consulté

Cet article présente principalement l'utilisation des cookies dans Laravel5. Les amis qui en ont besoin peuvent s'y référer

Lorsque j'ai utilisé les cookies dans le framework Laravel aujourd'hui, j'ai rencontré quelques problèmes et j'ai été confus pendant plus de la moitié. une heure. Pendant cette période, j'ai étudié le cours d'implémentation de Cookie et j'ai également trouvé de nombreuses informations sur le site Web, y compris des questions et réponses. La découverte n'a pas résolu le problème. Les réponses sur Internet sont plagiées et republiées les unes des autres. En fait, cela ne sert à rien. Heureusement, j'ai finalement trouvé une solution. Dans l'esprit d'être responsable du grand nombre de passionnés et de développeurs de Laravel, et en même temps, j'espère que tout le monde évitera les détours lors de l'utilisation des cookies, je contribuerai ici aux méthodes de paramétrage et de lecture des cookies dans Laravel pour tout le monde. critiquer et corriger.

Présentation

L'ajout de cookies est en fait très simple. Utilisez Cookie::make() directement. il est nécessaire d'introduire la façade Cookie, utilisez IlluminateSupportFacadesCookie ;, afin que le paramètre Cookie puisse être complété (bien sûr, il peut être automatiquement chargé via l'espace de noms sans introduire l'utilisation directe des Cookies).

Cependant, comment pouvons-nous obtenir la valeur du cookie après l'avoir défini ? Les développeurs qui ont recherché des questions connexes doivent savoir que les réponses sur Internet sont toujours : Cookie::get(), et certaines incluent même le code :

Cookie::make('test', 'hello, world', 10);
echo Cookie::get('test');
Copier après la connexion

Si vous testez Cookie selon cette réponse similaire, vous constaterez certainement que la valeur définie par le cookie est toujours nulle. Si plusieurs tests échouent, vous vous demanderez s'il y a un problème avec votre framework Laravel !

En fait, lorsque vous utilisez des Cookies dans le framework Laravel, vous devez mentionner Response et Request. Les développeurs qui utilisent souvent des navigateurs pour déboguer des programmes ont peut-être remarqué que les en-têtes de réponse et les en-têtes de requête de l'adresse de requête contiennent des informations sur les cookies. C'est vrai, si vous utilisez des cookies dans le framework Laravel, vous ne pouvez pas vous passer de Response et Request. Présentons la bonne façon d'ajouter et d'obtenir des cookies.

Comment utiliser 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);
Copier après la connexion

2. Tableau de stockage de cookies :

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'));
});
Copier après la connexion

Parlons des cookies de Laravel en détail

Ajouter un cookie

Par exemple, nous devons définir une valeur de cookie de "Bonjour, Laravel" dans le contrôleur et définir la période de validité sur 10 minutes. Il est recommandé d'utiliser ici la méthode de file d'attente de cookies Cookie::queue(), car le cookie sera automatiquement ajouté à la réponse :

<?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;);
 }
}
Copier après la connexion

Regardez dans les en-têtes de réponse. Ce n'est pas qu'il y ait un enregistrement de cookie supplémentaire. Bien entendu, si vous utilisez Response, vous pouvez directement utiliser la méthode withCookie() dans Response pour ajouter des cookies à la réponse :

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);
}
Copier après la connexion

Pour définir Pour une valeur de cookie qui n'expire jamais, vous pouvez utiliser la méthode Cookie::forever() :

Cookie::forever(&#39;test&#39;, &#39;Hello, Laravel&#39;);
Copier après la connexion

Le cookie lui-même ne fournit pas cette méthode, car Le cookie lui-même ne fournit pas cette méthode. La façade est fournie par IlluminateCookieCookieJar, les cookies peuvent donc utiliser les méthodes de cette classe. Ci-joint voici le code source de la méthode queue() :

/**
* 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;
}
Copier après la connexion

D'après le code source, nous pouvons savoir que la méthode queue() est en fait la méthode make() appelée .

Remarque : certains amis ont proposé la méthode d'injection de cookies sur la vue renvoyée return view(&#39;index&#39;)->withCookie($cookie), mais elle n'est pas valide lors des tests personnels. Il est recommandé d'utiliser queue()

pour obtenir Cookie

Comme nous l'avons mentionné dans l'aperçu, l'utilisation de Cookie est indissociable de Response et Demande. Il existe deux niveaux pour obtenir la valeur du Cookie, l'un est le serveur et l'autre est le client. Si vous souhaitez que le serveur obtienne la valeur du cookie, vous devez l'obtenir à partir de la requête :

public function index(Request $request)
{
 $cookie = $request->cookie(&#39;test&#39;);
 dump($cookie);
}
Copier après la connexion

Si vous souhaitez obtenir la valeur de tous cookies, vous pouvez utiliser la méthode de paramètre ne pas transmettre :

public function index(Request $request)
{
 $cookies = $request->cookie();
 dump($cookies);
}
Copier après la connexion

Accédez à nouveau à l'adresse, nous obtiendrons un tableau de toutes les valeurs des cookies, y compris le test que nous avons il suffit de définir :

array:3 [▼
 "XSRF-TOKEN" => "CDSXUUYYHJHGDDFGHJAxPNNsVxLHGTRYUGJ"
 "laravel_session" => "870a775gthhgef0b9f357edc6r6587878999876556"
 "test" => "Hello, Laravel"
]
Copier après la connexion

Lorsque nous devons l'utiliser sur le client, obtenir la valeur du cookie n'est pas le cas. Tout d'abord, les données que nous transmettons au client en répondant avecCookie($cookie) ne sont pas une chaîne, mais un objet cookie :

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

Get value Value, la classe Cookie fournit une méthode getValue() pour l'obtenir. Par exemple, modifiez le code dans le modèle :

<p>{{ $cookie->getValue() }}</p>
Copier après la connexion

Lorsque vous actualisez à nouveau la page, vous obtiendrez la valeur de cookie définie pour le test :

Bonjour Laravel

Effacer les cookies

La méthode d'effacement des cookies est relativement simple. Le principe est le même que celui de la configuration des cookies. , sauf que l'heure d'expiration est définie sur le passé. Ici, vous devez également ajouter un cookie à la réponse HTTP, en utilisant la méthode make() ou Forget() :

$cookie = Cookie::forget(&#39;test&#39;);
return Redirect::route(&#39;index&#39;)->withCookie($cookie);
Copier après la connexion

C'est tout pour cet article. Contenu, j'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Utilisation de Passport pour implémenter l'authentification Auth dans Laravel5.5

À propos de l'utilisation du package de traitement de date et d'heure Carbon dans Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!