セッションを使用すると、リクエスト全体で一意のユーザーを管理し、特定のユーザーのデータを保存できます。セッション データは、リクエスト オブジェクトにアクセスできる場所であれば、どこからでもアクセスできます。つまり、セッションは、コントローラー、ビュー、ヘルパー、セル、コンポーネントからアクセスできます。
次のコードを実行すると、セッション オブジェクトを作成できます。
$session = $this->request->session();
セッションに何かを書き込むには、write() session メソッドを使用できます。
Session::write($key, $value)
上記のメソッドは 2 つの引数、value と key を受け取り、その下に値が保存されます。
$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-write
次の URL にアクセスしてくださいセッションデータを読み取ります-http://localhost/cakephp4/session-read
次の URL にアクセスしてくださいセッションデータを確認します
- http://localhost/cakephp4/session-check次の URL にアクセスしてくださいセッション データを削除します
− http://localhost/cakephp4/session-delete にアクセスしてください次の URL にアクセスしてくださいセッション データを破棄します
- http://localhost/cakephp4/session-destroy以上がCakePHP セッション管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。