在注册操作中遇到恼人的错误。意想不到的T_STRING

时间:2010-08-21 20:06:12

标签: php authentication cakephp controller registration

设置我的身份验证,在我的users_controller中,我有一个下面列出的注册操作。我在第20行遇到错误

if (!empty($this->data)) { 

错误是:

syntax error, unexpected T_STRING

这是我的整个users_controller:

<?php
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Time', 'Crumb', 'Html', 'Form');
var $components = array('Auth');


function index() {
    $this->set('users', $this->User->find('all'));
}

function view($id = null) {
    $this->User->id = $id;
    $this->set('user', $this->User->read());
}

function register() {
if (!empty($this->data)) {
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
$this->User->create();
$this->User->save($this->data);
$this->redirect(array('action' => 'index'));
}
}
}   

function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
}

function login() {
}

function logout() {
    $this->redirect($this->Auth->logout());
}


}



?>

有人能看到什么错误吗?

Jonesy

4 个答案:

答案 0 :(得分:2)

你在第19行丢失了几个连字符。

if ($this->data['User']['password'] == $this->Auth >password($this>data['User']['password_confirm'])) {

应该是

if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {

我认为你将来能够检查自己的语法错误。

答案 1 :(得分:0)

请发布错误文字。它完全有可能在视图(ctp文件)中引用第20行,而不是控制器,并且似乎可能因为代码没有明显的错误。我犯了一个错误,我现在一次又一次地犯了罪。

答案 2 :(得分:0)

如果您使用Auth,您可能需要考虑一些事项。在beforeFilter您需要添加:

$this->Auth->allow('register', 'login', 'logout');

这将授予任何人访问这些权限的权限。

您需要了解的是如何解决语法错误。这是我建议的开始。就在第20行之前:

pr($this->data);
exit;

再次运行它,看看输出到浏览器的内容。您将能够看到正在进入的值(如果有的话),它可能会导致解决方案。

答案 3 :(得分:-1)

原因(S):

当对象使用__get方法时,empty函数不能对对象的属性起作用(也许AppController类正在这样做)。

另外,请记住(不过你的情况): empty()仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容不起作用:empty(trim($name))

此外,(不适用于您的情况):因为empty是语言结构而不是函数,所以无法使用变量函数调用它

解决方案:

因此,请创建您自己的空函数或直接比较值。