How To Handle Laravel Session Easily

How To Handle Laravel Session Easily

Laravel Session plays an important role in any web application, it helps you to save data in session which you can retrieve within your application.

In this post, we will look at how we can use the session helper methods in Laravel. Laravel Session provides many different format for saving session data which includes files, cookies, database, Redis and Memcached.

What is Session?

Sessions are a simple way to store data for each HTTP request against a unique session ID.

The session can provide the user activity data across your application. Session are normally sent to the browser via session cookies and the unique ID assigned against each session cookie can be used to retrieve session data.

Supported Session Drivers in Laravel

The default driver for the session are set to file when you create a new Laravel application. File drive is good for local development but for a production application, you should use the Redis or Memcached for the improved session performance.

You can change the session driver settings from the configuration file for the session located in config/session.php.

/*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default session "driver" that will be used on
    | requests. By default, we will use the lightweight native driver but
    | you may specify any of the other wonderful drivers provided here.
    |
    | Supported: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'file'),

Using Laravel Session to Store Data

There are two different methods in Laravel Framework which you can use to set the value in the session. The first one is using the session helper function session().

// Global helper function

session(['key' => 'value']);

Secondly you can use the Request instance to set the value in session.

// Request class instance

$request->session()->put(['key' => 'value']);

Pusing Value to Session Array

The push() method of Request instance in used to push a fresh value to an array session.

// Request class instance

$request->session()->push(['key' => 'value']);

Retrieve Session Data

There are some chain methods available for the session().

Getting Session Value By Key

Similar to storing a session value, there are two different ways to retrieve a session value.

The first method is using the session() method. To retrieve a session value use the below method.

// Global helper function

$value = session('key');

Second method is to use the Request instance:

// Request class instance

$value = $request->session()->get('key');

Getting All Session Values

To get all session values, use the all() method on the Request instance like below.

// Get all values from session

$values = $request->session()->all();

Checking If a Session Value Exists

The has() method can be use to determine if a session value exists in the session. It will return true if a value exists and null if value doesn’t exists.

// Checking if a session value exist

if ($request->session()->has('key') {
//
}

Regenrating Session IDs

If you want to regenerate all IDs for the session, you can use the regenerate() method.

// Regenerate session IDs

$request->session()->regenerate();

Deleting Session Values

Use the forget() method to remove a specified item from the session, which takes a key argument.

// Remove an item from the session

$request->session()->forget('key');

To remove all items from the session, you can use the flush() method.

// Remove all values from session

$request->session()->flush();

Over To You

Sessions are very important for any web application, almost all web frameworks provide this functionality out of the box. In this post, we tried to cover all use cases for the Laravel Session.

Your little help will keep this site alive and help us to produce quality content for you.