Laravel - 会话

  • 简述

    会话用于跨请求存储有关用户的信息。Laravel 提供了各种驱动程序,例如file, cookie, apc, array, Memcached, Redis,database处理会话数据。默认情况下,使用文件驱动程序,因为它是轻量级的。会话可以在存储的文件中配置config/session.php.
  • 访问会话数据

    要访问会话数据,我们需要一个可以通过 HTTP 请求访问的会话实例。获取实例后,我们可以使用get()方法,该方法将采用一个参数,“key”,获取会话数据。
    
    $value = $request->session()->get('key');
    
    您可以使用all()方法来获取所有会话数据而不是get()方法。
  • 存储会话数据

    数据可以使用以下方式存储在会话中put()方法。这put()方法将采用两个参数,“key”“value”.
    
    $request->session()->put('key', 'value');
    
  • 删除会话数据

    forget()方法用于从会话中删除项目。该方法将采取“key”作为论点。
    
    $request->session()->forget('key');
    
    使用flush()方法而不是forget()方法删除所有会话数据。使用pull()方法从会话中检索数据并随后将其删除。pull() 方法也将采用key作为论点。之间的区别forget()pull()方法是forget()方法不会返回会话的值并且pull()方法将返回它并从会话中删除该值。

    例子

    步骤 1− 创建一个名为SessionController通过执行以下命令。
    
    php artisan make:controller SessionController --plain
    
    步骤 2− 成功执行后,您将收到以下输出 −
    会话控制器
    步骤 3- 将以下代码复制到以下位置的文件中
    app/Http/Controllers/SessionController.php.
    app/Http/Controllers/SessionController.php
    
    <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    class SessionController extends Controller {
       public function accessSessionData(Request $request) {
          if($request->session()->has('my_name'))
             echo $request->session()->get('my_name');
          else
             echo 'No data in the session';
       }
       public function storeSessionData(Request $request) {
          $request->session()->put('my_name','Virat Gandhi');
          echo "Data has been added to session";
       }
       public function deleteSessionData(Request $request) {
          $request->session()->forget('my_name');
          echo "Data has been removed from session.";
       }
    }
    
    步骤 4- 添加以下行app/Http/routes.php文件。
    app/Http/routes.php
    
    Route::get('session/get','SessionController@accessSessionData');
    Route::get('session/set','SessionController@storeSessionData');
    Route::get('session/remove','SessionController@deleteSessionData');
    
    步骤 5− 访问以下 URLset data in session.
    
    http://localhost:8000/session/set
    
    步骤 6− 输出将如下图所示。
    会话中的数据
    步骤 7− 访问以下 URLget data from session.
    
    http://localhost:8000/session/get
    
    步骤 8− 输出将如下图所示。
    维拉·甘地
    步骤 9− 访问以下 URLremove session data.
    
    http://localhost:8000/session/remove
    
    步骤 10− 您将看到如下图所示的消息。
    会议