ホームページ  >  記事  >  バックエンド開発  >  CakePHP セッション管理

CakePHP セッション管理

WBOY
WBOYオリジナル
2024-09-10 17:26:38790ブラウズ

セッションを使用すると、リクエスト全体で一意のユーザーを管理し、特定のユーザーのデータを保存できます。セッション データは、リクエスト オブジェクトにアクセスできる場所であれば、どこからでもアクセスできます。つまり、セッションは、コントローラー、ビュー、ヘルパー、セル、コンポーネントからアクセスできます。

セッションオブジェクトへのアクセス

次のコードを実行すると、セッション オブジェクトを作成できます。

$session = $this->request->session();

セッションデータの書き込み

セッションに何かを書き込むには、write() session メソッドを使用できます。

Session::write($key, $value)

上記のメソッドは 2 つの引数、valuekey を受け取り、その下に値が保存されます。

$session->write('name', 'Virat Gandhi');

セッションデータの読み取り

保存されたデータをセッションから取得するには、read() session メソッドを使用できます。

Session::read($key)

上記の関数は引数を 1 つだけ取ります。それは、セッション データの書き込み時に使用された 値のキーです。正しいキーが提供されると、関数はその値を返します。

$session->read('name');

特定のデータがセッションに存在するかどうかを確認したい場合は、check() session メソッドを使用できます。

Session::check($key)

上記の関数は引数として key のみを受け取ります。

if ($session->check('name')) {
   // name exists and is not null.
}

セッションデータの削除

セッションからデータを削除するには、delete() session メソッドを使用してデータを削除します。

Session::delete($key)

上記の関数は、セッションから削除される値のキーのみを受け取ります。

$session->delete('name');

セッションからデータを読み取り、削除したい場合は、consume() session メソッドを使用できます。

static Session::consume($key)

上記の関数は引数としてキーのみを受け取ります。

$session->consume('name');

セッションの破棄

ユーザーがサイトからログアウトするときにユーザー セッションを破棄する必要があり、セッションを破棄するには destroy() メソッドが使用されます。

Session::destroy()

$session->destroy();

セッションを破棄すると、サーバーからすべてのセッション データが削除されますが、セッション Cookie は削除されません。

セッションを更新する

ユーザーセッションを更新したい状況では、renew() session メソッドを使用できます。

Session::renew()

$session->renew();

セッションを完了します

次のプログラムに示すように、config/routes.php ファイルを変更します。

config/routes.php

<?php use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/session-object',['controller'=>'Sessions','action'=>'index']);
   $builder->connect('/session-read',['controller'=>'Sessions','action'=>'retrieve_session_data']);
   $builder->connect('/session-write',['controller'=>'Sessions','action'=> 'write_session_data']);
   $builder->connect('/session-check',['controller'=>'Sessions','action'=>'check_session_data']);
   $builder->connect('/session-delete',['controller'=>'Sessions','action'=>'delete_session_data']);
   $builder->connect('/session-destroy',['controller'=>'Sessions','action'=>'destroy_session_data']);
   $builder->fallbacks();
});

src/Controller/SessionsController.php.SessionsController.php ファイルを作成します。

コントローラー ファイルに次のコードをコピーします

src/Controller/SessionsController.php

<?php namespace App\Controller;
use App\Controller\AppController;
   class SessionsController extends AppController {
   public function retrieveSessionData() {
      //create session object
      $session = $this->request->getSession();
      //read data from session
      $name = $session->read('name');
      $this->set('name',$name);
   }
   public function writeSessionData(){
      //create session object
      $session = $this->request->getSession();
      //write data in session
      $session->write('name','Virat Gandhi');
   }
   public function checkSessionData(){
      //create session object
      $session = $this->request->getSession();
      //check session data
      $name = $session->check('name');
      $address = $session->check('address');
      $this->set('name',$name);
      $this->set('address',$address);
   }
   public function deleteSessionData(){
      //create session object
      $session = $this->request->getSession();
      //delete session data
      $session->delete('name');
   }
   public function destroySessionData(){
      //create session object
      $session = $this->request->getSession();
      //destroy session
      $session->destroy();
   }
}
?>

src/Template にディレクトリ Sessions を作成し、そのディレクトリの下に write_session_data.php という名前の View ファイルを作成します。

そのファイル内の次のコード。

src/Template/Sessions/write_session_data.php

The data has been written in session.

同じ Sessions ディレクトリの下に retrieve_session_data.php という名前の別の View

ファイルを作成し、そのファイルに次のコードをコピーします。

src/Template/Sessions/retrieve_session_data.php

Here is the data from session.
CakePHP セッション管理: =$name;?>

同じセッション ディレクトリに check_session_data.ctp という名前の別の View

ファイルを作成し、そのファイルに次のコードをコピーします。

src/Template/Sessions/check_session_data.ctp

<?php if($name): ?>
name exists in the session.
<?php else: ?>
name doesn't exist in the database
<?php endif;?>
<?php if($address): ?>
address exists in the session.
<?php else: ?>
address doesn't exist in the database
<?php endif;?>

同じセッション ディレクトリに delete_session_data.ctp, という名前の別の View

ファイルを作成し、そのファイルに次のコードをコピーします。

src/Template/Sessions/delete_session_data.ctp

Data deleted from session.

同じセッション ディレクトリに destroy_session_data.ctp, という名前の別の View

ファイルを作成し、そのファイルに次のコードをコピーします。

src/Template/Sessions/destroy_session_data.ctp

Session CakePHP セッション管理.

出力

次の URL にアクセスして、上記の例を実行します。この URL は、セッションでのデータの書き込みに役立ちます。

http://localhost/cakephp4/session-writeWritten in Session

次の URL にアクセスしてくださいセッションデータを読み取ります-http://localhost/cakephp4/session-read

CakePHP セッション管理

次の URL にアクセスしてくださいセッションデータを確認します

- http://localhost/cakephp4/session-checkCakePHP セッション管理 Exists

次の URL にアクセスしてくださいセッション データを削除します

− http://localhost/cakephp4/session-delete にアクセスしてくださいDelete From Session

次の URL にアクセスしてくださいセッション データを破棄します

- http://localhost/cakephp4/session-destroyCakePHP セッション管理

以上がCakePHP セッション管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:CakePHP の国際化次の記事:CakePHP の国際化