【发布时间】:2015-05-20 12:59:51
【问题描述】:
所有代码都在一个控制器中
我的代码是这样的。
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/UsersController.php,第 56 行]
注意(8):Cake\Network\Session 类的对象到字符串的转换 [APP/Controller/UsersController.php,第 56 行]
错误:在非对象文件上调用成员函数 delete() /var/www/html/MEX/src/Controller/UsersController.php
【问题讨论】:
-
如果您收到错误,即使它们非常基本,请务必发布 complete、exact 错误消息,包括可能的堆栈跟踪!
-
我已经明确提到了你可以检查的错误
-
在注销时查看会话的
delete()的调用。你有$this->$session->delete()而不是$session->delete() -
谢谢。这些类型的错误再次出现警告(2):Cake\Network\Session::delete() 缺少参数 1,在第 56 行的 /var/www/html/MEX/src/Controller/UsersController.php 中调用,并且已定义 [CORE/src/Network/Session.php,第 477 行] 注意(8):未定义变量:名称 [CORE/src/Network/Session.php,第 479 行] 警告(2):无法修改标头信息 - 标头已存在发送者(从警告 (2) 开始的输出:session_regenerate_id() [function.session-regenerate-id]:无法重新生成会话 id - 标头已发送 [CORE/src/Network/Session.php,第 576 行]
-
错误可能更清楚吗?
Session::delete()需要传递一个参数。无意冒犯,但也许你应该先开始学习 PHP/编程基础,然后再开始使用像 CakePHP 这样成熟的框架。
标签: session cakephp cakephp-3.0