Get and set cookies in vanilla PHP with ease. A Laravel implementation is included, but this has no real advantages if you only use Laravel.
CAUTION! Never store sensitive data in a cookie!
Install this package through Composer:
composer require codezero/cookie
Autoload the vendor classes:
require_once 'vendor/autoload.php'; // Path may vary
And then use the VanillaCookie
implementation:
$cookie = new \CodeZero\Cookie\VanillaCookie();
If you want your cookies to be encrypted, pass an instance of codezero/encrypter to the Cookie
class.
You will also need to provide it with an encryption key that is needed to decrypt the cookie later on.
$key = 'my secret app key';
$encrypter = new \CodeZero\Encrypter\DefaultEncrypter($key);
$cookie = new \CodeZero\Cookie\VanillaCookie($encrypter);
TIP: Laravel automagically encrypts cookies by default!
You can "make" (or inject) a Cookie
instance anywhere in your app:
$cookie = \App::make('CodeZero\Cookie\Cookie');
TIP: Laravel's IoC container will automatically provide the Laravel specific
Cookie
implementation. This will use Laravel'sCookie
goodness behind the scenes!
This will return null
if the cookie doesn't exist or is expired.
$cookieValue = $cookie->get('cookieName');
If you don't specify $minutesValid
, a default of 60 minutes will be used.
$minutesValid = 120;
$cookie->store('cookieName', 'cookieValue', $minutesValid);
5 years feels like forever... ;)
$cookie->forever('cookieName', 'cookieValue');
If the cookie doesn't exist, nothing will happen...
$cookie->delete('cookieName');
You can check if a cookie exists. However, keep in mind that a cookie will not be available immediately. It will be on the next page load.
if ($cookie->exists('cookieName')) {
// The cookie exists!
}
$ composer run test
If you discover any security related issues, please e-mail me instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.