이 글은 주로 Laravel5의 쿠키 사용법을 소개합니다. 필요하신 분들은 참고하시면 됩니다
오늘 Laravel 프레임워크에서 쿠키를 사용하면서 30분 이상 혼란을 겪었습니다. , 쿠키 구현 수업에 관해서도 웹 사이트에서 질문과 답변을 포함하여 많은 정보를 찾았습니다. 발견은 문제를 해결하지 못했습니다. 인터넷상의 답변은 표절하여 서로 재게시하고 있습니다. 사실 아무 소용이 없습니다. 다행히 결국 해결책을 찾았습니다. 수많은 라라벨 매니아와 개발자들에 대한 책임을 지는 동시에 모든 분들이 쿠키를 사용할 때 우회하지 않기를 바라는 마음으로, 저는 모든 분들이 라라벨에서 쿠키를 설정하고 읽는 방법에 대해 기여하겠습니다. 비판하고 바로잡아라.
Overview
Cookie::make()를 직접 사용하기 전에 IlluminateSupportFacadesCookie;를 사용하여 Cookie 설정을 할 수 있도록 해야 합니다. 완료됩니다(물론 쿠키를 직접 사용하지 않고도 네임스페이스를 통해 자동으로 로드될 수도 있습니다).
그런데 쿠키 값을 설정한 후 어떻게 얻을 수 있나요? 관련 질문을 검색한 개발자는 인터넷의 답변이 항상 Cookie::get()이고 일부는
Cookie::make('test', 'hello, world', 10); echo Cookie::get('test');
코드를 포함한다는 점을 알아야 합니다. 이와 유사한 답변을 따라 쿠키를 테스트한다면, 쿠키에 의해 설정된 값이 항상 null이라는 것을 확실히 알 수 있습니다. 여러 테스트가 실패하면 Laravel 프레임워크에 문제가 있는 것이 아닐까 의심하게 될 것입니다!
사실 Laravel 프레임워크에서 쿠키를 사용할 때 응답과 요청을 언급해야 합니다. 프로그램을 디버깅하기 위해 브라우저를 자주 사용하는 개발자는 요청 주소의 응답 헤더와 요청 헤더 모두에 쿠키 정보가 포함되어 있음을 알 수 있습니다. 맞습니다. Laravel 프레임워크에서 쿠키를 사용한다면 Response와 Request 없이는 불가능합니다. 쿠키를 추가하고 얻는 올바른 방법을 소개하겠습니다.
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. 쿠키 저장 배열:
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')); });
자세한 내용은 아래를 참조하세요. 라라벨의 쿠키에 대해 자세히 알아볼까요
쿠키 추가
예를 들어 컨트롤러에서 "Hello, Laravel"이라는 쿠키 값을 설정하고 유효 기간을 10분으로 설정해야 합니다. 쿠키가 자동으로 응답에 추가되므로 쿠키 대기열 메서드 Cookie::queue()를 사용하는 것이 좋습니다.
<?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'); } }
응답 헤더에 추가 설정 쿠키 레코드가 있는지 확인하세요. 물론 Response를 사용하는 경우 Response에서 withCookie() 메서드를 직접 사용하여 응답에 쿠키를 추가할 수 있습니다.
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); }
만료되지 않는 쿠키 값을 설정하려면 Cookie::를 영원히 사용할 수 있습니다. () 메소드:
Cookie::forever('test', 'Hello, Laravel');
Cookie 자체에서는 이 메소드를 제공하지 않습니다. Cookie의 Facade는 IlluminateCookieCookieJar에서 제공하므로 Cookie는 이 클래스의 메소드를 사용할 수 있습니다. 여기에 첨부된 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; }
소스 코드를 보면 queue() 메소드가 실제로 호출된 make() 메소드임을 알 수 있습니다.
참고: 일부 친구들은 반환된 뷰 return view('index')->withCookie($cookie)
에 쿠키를 삽입하는 방법을 제안했지만 개인 테스트에서는 유효하지 않습니다. 쿠키
를 얻으려면 queue()
를 사용하는 것이 좋습니다. 개요에서 언급했듯이 쿠키의 사용은 응답 및 요청과 분리될 수 없습니다. 쿠키 값을 얻는 데는 두 가지 수준이 있습니다. 하나는 서버이고 다른 하나는 클라이언트입니다. 서버가 쿠키 값을 가져오도록 하려면 요청에서 이를 가져와야 합니다.
public function index(Request $request) { $cookie = $request->cookie('test'); dump($cookie); }
모든 쿠키의 값을 가져오려면 매개 변수를 전달하지 않고 메서드를 사용할 수 있습니다.
public function index(Request $request) { $cookies = $request->cookie(); dump($cookies); }
주소를 다시 방문하면 방금 설정한 테스트를 포함하여 모든 쿠키 값의 배열을 얻을 수 있습니다.
array:3 [▼ "XSRF-TOKEN" => "CDSXUUYYHJHGDDFGHJAxPNNsVxLHGTRYUGJ" "laravel_session" => "870a775gthhgef0b9f357edc6r6587878999876556" "test" => "Hello, Laravel" ]
클라이언트에서 이를 사용해야 할 때 쿠키 값을 얻는 방법은 다음과 같습니다. 그렇지 않습니다. 우선 withCookie($cookie)에 응답하여 클라이언트에 전송하는 데이터는 문자열이 아니라 쿠키 객체입니다.
Cookie {#1490 ▼ #name: "test" #value: "Hello, Laravel" #domain: null #expire: 1493791460 #path: "/" #secure: false #httpOnly: true }
값을 얻기 위해 Cookie 클래스는 getValue() 메소드를 제공합니다. 그것을 얻으려면 선택하십시오. 예를 들어, 템플릿의 코드를 편집하세요:
<p>{{ $cookie->getValue() }}</p>
페이지를 다시 새로 고치면 테스트에 설정된 쿠키 값이 표시됩니다:
Hello, Laravel
Clear Cookies
The 쿠키를 삭제하는 방법은 비교적 간단하며, 만료 시간이 과거로 설정된다는 점을 제외하면 원칙은 쿠키 설정과 동일합니다. 여기에서는 make() 또는 잊어버리기() 메소드를 사용하여 HTTP 응답에 쿠키를 추가해야 합니다.
$cookie = Cookie::forget('test'); return Redirect::route('index')->withCookie($cookie);
위는 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다. 관련 내용은 PHP 중국어 웹사이트에 주목해주세요!
관련 권장 사항:
Passport를 사용하여 Laravel5.5에서 인증 인증 구현
Laravel의 날짜 및 시간 처리 패키지인 Carbon 사용에 대해
위 내용은 Laravel5의 쿠키 사용에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!