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');
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);
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')); });
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('test', 'Hello, Laravel', 10);//如果不适用上面的use Cookie,这里可以直接调用 \Cookie return view('index'); } }
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('test', 'Hello, Laravel', 10); return \Response::make('index')->withCookie($cookie); //return $response->make('index')->withCookie($cookie); }
Pour définir Pour une valeur de cookie qui n'expire jamais, vous pouvez utiliser la méthode Cookie::forever() :
Cookie::forever('test', 'Hello, Laravel');
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, 'make'], func_get_args()); } $this->queued[$cookie->getName()] = $cookie; }
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('index')->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('test'); dump($cookie); }
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); }
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" ]
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 }
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>
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('test'); return Redirect::route('index')->withCookie($cookie);
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!