尝试过不使用字段映射,自动验证里面填入数据表的字段,功能一切正常~
下面是各模块的关键代码,求各位指导!万分感激!
TP:2.2
PHP Version:5.4.4
HTML表单
<form action="__URL__/login" method="post">
<p><{$Think.config.APP_COMPANY_NAME}></p>
<p>后台管理系统</p>
<p>用户名: <input type="text" name="l_user" /></p>
<p>密 码: <input type="password" name="l_password" /></p>
<p>验证码: <input type="captcha" name="captcha" style="width: 65px;"/> <img src="__URL__/captcha" id="captcha_img"/></p>
<p><input type="submit" value="登陆" /> <input type="reset" value="重新填写" /></p>
</form>
AdminAction 控制器 public function login()
{
$Admin = D('admin');
if($data = $Admin->create()){
dump($data); <=== 开启字段映射后,$data数据是空的
if($_SESSION['verify']!=md5($_POST['captcha'])) $this->error('验证码错误');
if($Admin->isLock($data)) $this->error('账号已被锁定');
if($Admin->isAdmin($data)){
$Admin->updateLoginInfo($data);
$_SESSION['admin'] = $Admin->getInfo($Admin->admin_name);
unset($_SESSION['verify']);
$this->main();
}else{
$this->error('用户名或密码错误!');
}
}else{
$this->error($Admin->getError());
}
}
AdminModelclass AdminModel extends Model
{
protected $_validate = array(
// 设置为1,验证时始终说用户名不能为空,此时create()返回的data()是空数组
// 设置为其它值时,验证失效,但create()返回的data有表单中的数据
array('l_user','require','用户名不能为空!',1),
array('l_password','require','密码不能为空!',1),
);
protected $_auto = array (
array('admin_password','md5',3,'function'),
);
protected $_map = array(
'l_user'=>'admin_name',
'l_password'=>'admin_password',
);
Admin 表字段admin_id ====> int(10) UN PK AI
admin_name ====> varchar(45)
admin_password ====> char(32)
admin_mail ====> varchar(50)
regis_time ====> date
last_login_ip ====> varchar(45)
last_login_date ====> datetime
is_lock ====> enum('0','1')
is_delete ====> enum('0','1')
最佳答案
