CakePHP - Oturum Yönetimi
Oturum, benzersiz kullanıcıları istekler arasında yönetmemize ve belirli kullanıcılar için verileri depolamamıza olanak tanır. Oturum verilerine her yerde, her yerde, istek nesnesine erişiminizin olduğu her yerde erişilebilir, yani oturumlara denetleyicilerden, görünümlerden, yardımcılardan, hücrelerden ve bileşenlerden erişilebilir.
Oturum Nesnesine Erişim
Aşağıdaki kod çalıştırılarak oturum nesnesi oluşturulabilir.
$session = $this->request->session();
Oturum Verilerinin Yazılması
Oturumda bir şeyler yazmak için, write() session yöntem.
Session::write($key, $value)
Yukarıdaki yöntem iki argüman alacaktır, value ve key altında, değerin saklanacağı.
Misal
$session->write('name', 'Virat Gandhi');
Oturum Verilerini Okuma
Depolanan verileri oturumdan almak için, read() session yöntem.
Session::read($key)
Yukarıdaki işlev yalnızca bir argüman alacaktır, yani the key of the value,oturum verileri yazılırken kullanılan. Doğru anahtar sağlandıktan sonra işlev, değerini döndürür.
Misal
$session->read('name');
Oturumda belirli verilerin bulunup bulunmadığını kontrol etmek istediğinizde, check() session yöntem.
Session::check($key)
Yukarıdaki işlev, bağımsız değişken olarak yalnızca anahtarı alacaktır.
Misal
if ($session->check('name')) {
// name exists and is not null.
}
Oturum Verilerini Silin
Verileri oturumdan silmek için, delete() session verileri silme yöntemi.
Session::delete($key)
Yukarıdaki işlev, oturumdan silinecek değerin yalnızca anahtarını alacaktır.
Misal
$session->delete('name');
Oturumdaki verileri okumak ve silmek istediğinizde, consume() session yöntem.
static Session::consume($key)
Yukarıdaki işlev, bağımsız değişken olarak yalnızca anahtarı alacaktır.
Misal
$session->consume('name');
Bir Oturumu Yıkmak
Kullanıcı siteden çıkış yaptığında bir kullanıcı oturumunu yok etmemiz ve oturumu yok etmemiz gerekir. destroy() yöntem kullanılır.
Session::destroy()
Misal
$session->destroy();
Oturumu yok etmek, tüm oturum verilerini sunucudan kaldıracak, ancak oturum tanımlama bilgisini kaldırmayacaktır.
Oturumu Yenileyin
Kullanıcı oturumunu yenilemek istediğiniz bir durumda, renew() session yöntem.
Session::renew()
Misal
$session->renew();
Oturumu Tamamla
Değişiklik yapın config/routes.php dosya aşağıdaki programda gösterildiği gibi.
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();
});
Oluşturmak SessionsController.php dosya src/Controller/SessionsController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın
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();
}
}
?>
Bir dizin oluşturun Sessions -de src/Template ve bu dizinin altında bir View dosya çağrıldı write_session_data.php. Aşağıdaki kodu o dosyaya kopyalayın.
src/Template/Sessions/write_session_data.php
The data has been written in session.
Başka bir tane yarat View dosya çağrıldı retrieve_session_data.php aynı şekilde Sessions dizin ve aşağıdaki kodu o dosyaya kopyalayın.
src/Template/Sessions/retrieve_session_data.php
Here is the data from session.
Name: <?=$name;?>
Başka bir tane yarat View dosya çağrıldı check_session_data.ctp aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.
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;?>
Başka bir tane yarat View dosya çağrıldı delete_session_data.ctp, aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.
src/Template/Sessions/delete_session_data.ctp
Data deleted from session.
Başka bir tane yarat View dosya çağrıldı destroy_session_data.ctp, aynı Sessions dizini altında ve aşağıdaki kodu bu dosyaya kopyalayın.
src/Template/Sessions/destroy_session_data.ctp
Session Destroyed.
Çıktı
Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün. Bu URL, oturumda veri yazmanıza yardımcı olacaktır.
http: // localhost / cakephp4 / oturum yazma
Aşağıdaki URL'yi ziyaret edin to read session data − http://localhost/cakephp4/session-read
Aşağıdaki URL'yi ziyaret edin to check session data - http: // localhost / cakephp4 / oturum denetimi
Aşağıdaki URL'yi ziyaret edin to delete session data - http: // localhost / cakephp4 / session-delete adresini ziyaret edin
Aşağıdaki URL'yi ziyaret edin to destroy session data - http: // localhost / cakephp4 / session-destroy