Cakephp 模式验证错误

Cakephp 模式验证错误,cakephp,cakephp-2.0,cakephp-model,Cakephp,Cakephp 2.0,Cakephp Model,我有一个简单的登记表和完整的模型验证 public function add() { // Has any form data been POSTed? if ($this->request->is('post')) { $this->User->set($this->request->data); //echo '<pre>'; print_r($this->data);exit;

我有一个简单的登记表和完整的模型验证

public function add() {
            // Has any form data been POSTed?
            if ($this->request->is('post')) {
$this->User->set($this->request->data); //echo '<pre>'; print_r($this->data);exit;
                        if($this->User->validates()){
                if ($this->User->save($this->request->data)) {
                    // Set a session flash message and redirect.
                    $this->Session->setFlash('User Saved!');
                    return $this->redirect('/users');
                }
}
            }
        }
问题是,当我使用firebug删除html字段并提交表单时,它会使用空白条目保存数据。我认为这是我面临的一个大问题,因为保存空白条目不是一个好的做法,我想让黑客或任何人阻止它。
请提供帮助。

为数据库中不应为空条目的所有字段添加验证规则
'notEmpty'


参考资料:

我同意semmelbroesel13

请使用notEmpty规则:

'rule'=>数组('notempty')

更新:

请尝试下面的代码并检查查询的确切内容

公共函数添加(){
//是否已发布任何表格数据?
如果($this->request->is('post')){
$this->User->set($this->request->data);//回显“”;打印($this->data);退出;
如果($this->User->validates()){
如果($this->User->save($this->request->data)){
$log=$this->User->getDataSource()->getLog(false,false);
回显“;打印($log);退出;
//设置会话闪存消息并重定向。
$this->Session->setFlash('User Saved!');
返回$this->redirect('/users');
}
}
}
}

您的验证在哪里?您需要在用户模型中添加验证规则。我也添加了模式代码,但您没有正确理解我的问题。代码可以很好地处理html,但是如果某些用户使用firebug删除代码,然后提交表单,则不会出现验证错误并保存空白条目。请检查mysql用户表中的字段是否可以为空。这可能是问题所在。@cakedev,您在其中验证了它,如
$this->Company->validates()
?使用,
notEmpty
并不像@semmelbroesel13和@Er.KT所想的那样。我已经试过了,但它不起作用,而且它显然不起作用,因为我的问题是关于用户删除的一些字段(例如电子邮件字段)是何时被用户使用firebug删除的,现在他在模型验证时提交表单,是否有电子邮件检查有效与否。但此检查被跳过,因为电子邮件字段未采用提交形式。它跳过检查并将数据保存在DB中。这不仅涉及电子邮件字段,而且涉及所有字段和任何模型。请提供帮助,以便您可以在数据库中设置为非空。我已经设置为非空。按照此链接查看屏幕截图。检查下面的查询----------数组([log]=>数组([0]=>数组([query]=>插入
用户
修改的
创建的
)值('2014-05-01 18:23:09','2014-05-01 18:23:09')[params]=>Array()[受影响]=>1[numRows]=>1[take]=>1],[count]=>1[time]=>1)您是否尝试执行查询插入到用户(修改、创建)值中('2014-05-01 18:23:09', '2014-05-01 18:23:09')在phpmyadmin direct中?我已经尝试过了,但这不起作用,而且显然不起作用,因为我的问题是关于用户删除的某些字段(例如电子邮件字段)何时被用户使用firebug删除,现在他在模型验证时提交表单,是否有电子邮件有效的检查。但由于电子邮件字段无效,因此此检查被跳过未以提交形式提交。它将跳过该检查并将数据保存在数据库中。这不仅涉及电子邮件字段,而且涉及所有字段和任何模型。请帮助
class User extends AppModel {
    public $validate = array(
        'username' => array(
            'alphaNumeric' => array(
                'rule'     => 'alphaNumeric',
                'required' => true,
                'message'  => 'Alphabets and numbers only'
            ),
            'between' => array(
                'rule'    => array('between', 5, 15),
                'message' => 'Between 5 to 15 characters'
            )
        ),
        'password' => array(
            'rule'    => array('minLength', '8'),
            'message' => 'Minimum 8 characters long'
        ),
        'email' => 'email',
        'born' => array(
            'rule'       => 'date',
            'message'    => 'Enter a valid date',
            'allowEmpty' => true
        )
    );
}
public function add() {
            // Has any form data been POSTed?
            if ($this->request->is('post')) {
                  $this->User->set($this->request->data); //echo '<pre>'; print_r($this->data);exit;
                        if($this->User->validates()){
                if ($this->User->save($this->request->data)) {
$log=$this->User->getDataSource()->getLog(false, false);
 echo "<pre>";print_r($log);exit;
                    // Set a session flash message and redirect.
                    $this->Session->setFlash('User Saved!');
                    return $this->redirect('/users');
                }
}
            }
        }