Laravel Course

- 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('id')->unique();
  $table->unsignedInteger('user_id')->nullable();
  $table->string('ip_address', 45)->nullable();
  $table->text('user_agent')->nullable();
  $table->text('payload');
  $table->integer('last_activity');
});
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:
if($request->session()->has('users')){
  //
}
To determine if a Session is present, even if its value is null, you may use the exists() method:
if($request->session()->exists('users')){
  //
}

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:
@if(session('key'))  
 {{session('key')}}
@endif
Or:
{{session('key', '')}}

Practical example

1. We create a controller called SessionController.
Copy the following code and save it in "app/Http/Controllers/SessionController.php".
<?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:
Route::get('session/get','SessionController@getSession');
Route::get('session/put','SessionController@putSession');
Route::get('session/delete','SessionController@deleteSession');
3. Visit the following URL to add data in session:
//localhost:8000/session/put
- Output:
Data has been added to session "my_name"
4. Visit the following URL to get data from session:
//localhost:8000/session/get
- Output:
Session 'my_name' = Mar Plo
5. Visit the following URL to delete "my_name" session:
//localhost:8000/session/delete
- 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

HTML
CSS
JavaScript
PHP-MySQL
Which tag is used to add lists into <ul> and <ol> elements?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://coursesweb.net/css/</li>
</ul>
Which value of the "display" property creates a block box for the content and ads a bullet marker?
block list-item inline-block
.some_class {
  display: list-item;
}
Which instruction converts a JavaScript object into a JSON string.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicate the PHP class used to work with HTML and XML content in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Sessions

Last accessed pages

  1. Mysql SELECT JOIN tables on two different Databases (4498)
  2. jQuery UI draggable - Drag elements (11448)
  3. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (142520)
  4. Using the Bone Tool (4253)
  5. Node.js Move and Copy Directory (20134)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (523)
  2. The Mastery of Love (65)
  3. CSS cursor property - Custom Cursors (62)
  4. Read Excel file data in PHP - PhpExcelReader (59)
  5. PHP-MySQL free course, online tutorials PHP MySQL code (44)