Session 如何在cakephp 3.0中删除会话?
所有代码都在一个控制器中 我的代码是这样的Session 如何在cakephp 3.0中删除会话?,session,cakephp,cakephp-3.0,Session,Cakephp,Cakephp 3.0,所有代码都在一个控制器中 我的代码是这样的 public function login() { $session = $this->request->session(); $session_event_id = $session->read('Events.event_id'); $session_division_id = $session->read('Events.division_id'); if(!$sessio
public function login()
{
$session = $this->request->session();
$session_event_id = $session->read('Events.event_id');
$session_division_id = $session->read('Events.division_id');
if(!$session_event_id || !$session_division_id) {
$event_table = TableRegistry::get('Events');
$event = $event_table->find('all', ['fields' => ['id'], 'order' => 'id desc'])->first();
$session->write('Events.event_id', $event->id);
$session_event_id = $session->read('Events.event_id');
$division_table = TableRegistry::get('Divisions');
$division = $division_table->find('all',['fields' => ['id'], 'conditions' => ['event_id' => $event->id]])->first();
$session->write('Events.division_id', $division->id);
$session_division_id = $session->read('Events.division_id');
}
}
通过上面的代码,我能够写入和读取会话值,但在注销时,我想删除这些会话数据
public function logout()
{
$session = $this->request->session();
$this->$session->delete();
return $this->redirect($this->Auth->logout());
}
警告(4096):无法创建类Cake\Network\Session的对象
转换为字符串[APP/Controller/userscoontroller.php,第56行]
注意(8):类Cake\Network\Session到字符串转换的对象
[APP/Controller/userscoontroller.php,第56行]
错误:对非对象文件调用成员函数delete()
/var/www/html/MEX/src/Controller/userscocontroller.php
您正在查找
$this->request->session()->destroy()代码>
只是一个提示-对于这么小的函数,存储变量$session
没有多大意义,因为不需要重用$session
。我唯一要存储$this->request->session()的情况变量中的code>是指在同一函数中访问会话进行多次读写时
(就错误而言,@Eagle是正确的,因为您使用该存储变量引用了“$this
”两次。)感谢您的支持和帮助,最终我自己找到了问题的解决方案
$session = $this->request->session();
$session->delete('Events.event_id');
$session->delete('Events.division_id');
通过这样做,我能够清除会话数据。谢谢请,如果您收到错误,即使是非常基本的错误,请始终发布完整、准确的错误消息,包括可能的堆栈跟踪!我已经清楚地提到了这个错误,您可以在注销时调用会话的delete()
来检查outLook。您有$this->$session->delete()
而不是$session->delete()
谢谢。这些类型的错误再次出现警告(2):Cake\Network\Session::delete()缺少参数1,在第56行的/var/www/html/MEX/src/Controller/userscocontroller.php中调用,并定义了[CORE/src/Network/Session.php,第477行]注意(8):未定义变量:name[CORE/src/Network/Session.php,第479行]警告(2):无法修改头信息-已发送的头(输出在警告(2)时启动):会话重新生成id()[函数.会话重新生成id]:无法重新生成会话id-已发送的头[CORE/src/Network/session.php,第576行]错误可能更清楚吗?session::delete()
需要传递一个参数。无意冒犯,但在开始使用像CakePHP这样成熟的框架之前,您应该先学习PHP/编程基础知识。