- Accessing Session Data
- Determining if a Session exists
- Storing data in Session
- Deleting Session
- Laravel Session in controller __construt()

Sessions are used to store informations across the requests. Laravel provides various drivers to store session data: file, cookie, apc, array, Memcached, Redis, and database.

Using Database Session Driver

When using the database session driver, you will need to create a table to contain the session items.
Below is an example Schema declaration for the 'session' table:
Schema::create('sessions', function ($table){
  $table->string('ip_address', 45)->nullable();
You may use the session:table Artisan command to automatically generate this migration:
php artisan session:table

php artisan migrate

Accessing Session Data

To access data stored in session, you can use the session() method of the Request instance, or the global session() helper.

Accessing the session via a Request instance

After getting the Request instance, we can use the get('sesion_name') method to get the session data.
$value = $request->session()->get('key');
You may also pass a default value as the second argument to the get() method, to be returned if the specified key does not exist in the session.
You can also pass a function as the default value:
$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function(){
  return 'default';
You can use the all() method to get an array with all session data.
$sess = $request->session()->all();

The Global session() function

Similar with the $request->session()->get('key') method, the session() function receives a string argument for the session key, and optional, a second argument for 'default' value:
Route::get('home', function(){
  //Retrieve the value of the session with key 'name'
  $value = session('name');

  //Specifying a default value
  $value = session('name', 'default');
By default, Laravel session expires after 120 minutes. To modify the session lifetime, open the config/session.php file, and change the value of the 'lifetime' key.

Determining if a Session exists

To determine if a Session exists and is not null, use the use() method:
To determine if a Session is present, even if its value is null, you may use the exists() method:

Storing data in Session

To store data in session, you can use the put() method or the session() function.
- The put() method will take two arguments, the 'key' and the 'value':
$request->session()->put('key', 'value');
- When the session() helper is called with an array of key / value pairs, those values will be stored in the session:
session(['key'=> 'value']);

Deleting Session

To delete session, you can use one of these methods:

If you want to add the value of a session directly in blade template, you can use one of these formats:
{{session('key', '')}}

Practical example

1. We create a controller called SessionController.
Copy the following code and save it in "app/Http/Controllers/SessionController.php".
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class SessionController extends Controller {
  public function getSession(Request $request){
    if($request->session()->has('my_name')) return "Session 'my_name' = ". $request->session()->get('my_name');
    else return 'No data in session';

  public function putSession(Request $request){
    $request->session()->put('my_name','Mar Plo');
    return 'Data has been added to session "my_name"';

  public function deleteSession(Request $request){
    if($request->session()->has('my_name')) $request->session()->forget('my_name');
    return 'my_name session has been deleted.';
2. Now, set up the routes to test the SessionController.
Add the following code in the routes/web.php file:
3. Visit the following URL to add data in session:
- Output:
Data has been added to session "my_name"
4. Visit the following URL to get data from session:
- Output:
Session 'my_name' = Mar Plo
5. Visit the following URL to delete "my_name" session:
- Output:
my_name session has been deleted.
6. Now, if you visit again the URL: //localhost:8000/session/get , it will display:
No data in session

Laravel Session in controller __construt()

Laravel Sessions are initiated in middleware; the session cannot be directly accessed in controller's constructor because the middleware has not run yet.
To use Session in controller's __construt(), use the $this->middleware(Callback) method directly in your constructor, and work with Session in the "Callback" function passed as argument.
public function __construct(){
  $this->middleware(function($request, $next){
    //Your code with Session ..

    return $next($request); //<- this is required

- Documentation: Laravel - Sessions

Daily Test with Code Example

Click on the HTML tag which creates an horizontal line in web page.
<br /> <em> <hr />
Some content ...
<hr />
Content under line ...
Which CSS property defines the text color?
font-style font-variant color
h2 {
  color: #cbdafb;
Click on the function which searches if a character, or text exists in a string.
indexOf() toString() split()
var str = "Web courses - http://CoursesWeb.net/";
if(str.indexOf("http://") == -1) alert("http:// isn`t in string");
else alert("http:// is in string");
Which function splits a string into an array of strings based on a separator?
array_merge() explode() implode()
$str = "apple,banana,melon,pear";
$arr = explode(",", $str);
var_export($arr);      // array (0=>"apple", 1=>"banana", 2=>"melon", 3=>"pear")

Last accessed pages

  1. SHA1 Encrypt data in JavaScript (9340)
  2. HTML Symbol Entities (824)
  3. SHA256 Encrypt hash in JavaScript (7024)
  4. Sending Email, Mailables (240)
  5. Define Custom List-item Markers, Bullets for UL, OL Lists (3680)

Popular pages this month

  1. Insert, Select and Update NULL value in MySQL (515)
  2. Read Excel file data in PHP - PhpExcelReader (430)
  3. PhpSpreadsheet - Read, Write Excel and LibreOffice Calc files (319)
  4. PHP getElementById and getElementsByTagName (255)
  5. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (234)