세션을 사용하면 요청 전반에 걸쳐 고유한 사용자를 관리하고 특정 사용자에 대한 데이터를 저장할 수 있습니다. 세션 데이터는 요청 객체에 액세스할 수 있는 곳이면 어디에서나 액세스할 수 있습니다. 즉, 세션은 컨트롤러, 뷰, 도우미, 셀 및 구성 요소에서 액세스할 수 있습니다.
다음 코드를 실행하면 세션 객체를 생성할 수 있습니다.
$session = $this->request->session();
세션에서 무언가를 작성하려면 write() 세션 메서드를 사용할 수 있습니다.
Session::write($key, $value)
위 메소드는 값이 저장될 값과 키라는 두 개의 인수를 사용합니다.
$session->write('name', 'Virat Gandhi');
세션에서 저장된 데이터를 검색하려면 read() 세션 메서드를 사용할 수 있습니다.
Session::read($key)
위 함수는 세션 데이터 작성 시 사용된 값의 키 하나만 인수로 사용합니다. 올바른 키가 제공되면 함수는 해당 값을 반환합니다.
$session->read('name');
세션에 특정 데이터가 존재하는지 확인하고 싶다면 check() 세션 메소드를 사용하면 됩니다.
Session::check($key)
위 함수는 키만 인수로 사용합니다.
if ($session->check('name')) { // name exists and is not null. }
세션에서 데이터를 삭제하려면 delete() session 메소드를 사용하여 데이터를 삭제할 수 있습니다.
Session::delete($key)
위 함수는 세션에서 삭제할 값의 키만 가져옵니다.
$session->delete('name');
세션에서 데이터를 읽고 삭제하려면 consume() 세션 메서드를 사용하면 됩니다.
static Session::consume($key)
위 함수는 키만 인수로 사용합니다.
$session->consume('name');
사용자가 사이트에서 로그아웃할 때 사용자 세션을 삭제해야 하며 세션을 삭제하려면 destroy() 메서드가 사용됩니다.
Session::destroy()
$session->destroy();
세션을 삭제하면 서버에서 모든 세션 데이터가 제거되지만 세션 쿠키는 제거되지 않습니다.
사용자 세션을 갱신하려는 상황에서는 renew() 세션 메서드를 사용할 수 있습니다.
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/템플릿/세션/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;?>
동일한 Sessions 디렉터리에 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;?>
동일한 Sessions 디렉터리 아래에 delete_session_data.ctp라는 또 다른 View 파일을 만들고 해당 파일에 다음 코드를 복사하세요.
src/Template/Sessions/delete_session_data.ctp
Data deleted from session.
동일한 Sessions 디렉터리 아래에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!