Zend framework 向salt注册的Zend表格
我有一个简单的注册表和使用md5加密和salt散列的密码,我得到一个错误,说“uni”字段不能为空,我假设这是因为我不确定如何将$salt添加到表单中(它是否是隐藏元素?像id字段一样?)。我已完成以下模型:Zend framework 向salt注册的Zend表格,zend-framework,zend-form,Zend Framework,Zend Form,我有一个简单的注册表和使用md5加密和salt散列的密码,我得到一个错误,说“uni”字段不能为空,我假设这是因为我不确定如何将$salt添加到表单中(它是否是隐藏元素?像id字段一样?)。我已完成以下模型: public function addUser($first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni) { $salt=substr(md5(mt_rand()),0,20)
public function addUser($first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni) {
$salt=substr(md5(mt_rand()),0,20);
$md5Password=md5($salt.$password);
$data = array(
'first_name' => $first_name,
'surname' => $surname,
'email' => $email,
'username' => $username,
'salt' => $salt,
'password' => $md5Password,
'age' => $age,
'gender' => $gender,
'uni' => $uni,
);
$this->insert($data);
}
以下是表格:
<?php
class Application_Form_Register extends Zend_Form
{
public function init() {
$this->setName('register');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$first_name = new Zend_Form_Element_Text('first_name');
$first_name->setLabel('Firstname:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$surname = new Zend_Form_Element_Text('surname');
$surname->setLabel('Surname:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$username = new Zend_Form_Element_Text('username');
$username->setLabel('Username:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$password = new Zend_Form_Element_Password('password');
$password->setLabel('Password:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$salt = new Zend_Form_Element_Hidden('salt');
$age = new Zend_Form_Element_Text('age');
$age->setLabel('Age:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$gender = new Zend_Form_Element_Text('gender');
$gender->setLabel('Gender:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$uni = new Zend_Form_Element_Text('uni');
$uni->setLabel('University:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni, $submit));
}
}
第一个“uni”是一个表单字段
$uni = new Zend_Form_Element_Text('uni');
$uni->setLabel('University:')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
向声明为“not null”的db table列传递“null”值时,会发生此错误。要解决此问题,请向“addUser()”方法传递一个“notnull”值,在方法api中为“uni”设置一个默认值,或允许db表的“uni”列接受“null”值。
就我个人而言,我通常在方法上向这些类型传递一个数组,然后提取我想要的位。比如:
public function addStation(array $data) {
$data = array(
'station' => $data['station'],
'comment' => $data['comment']
);
$this->insert($data);
}
就我个人而言,我根本不会把盐场放在表格中,我会在模型中分配盐分。向全世界展示我的盐毫无意义
祝你好运。是的,但是uni不应该为null,也不是null。我在字段中输入了数据。检查发布的数据,在某个地方你丢失了“uni”数据。您提供的代码没有明显的错误。可能在控制器中转储$form变量,并确保所有内容都在那里。对不起,这是我犯的一个愚蠢的错误,我在数据库中遗漏了一列,所以我在模型中插入了8,而总共有9列。。