|
楼主 |
发表于 2008-6-20 14:14:21
|
显示全部楼层
我在做一个登录验证的东西。
代码如下:
在密码部分我派生了一个函数来验证是否正确。
遇到的问题:
PHP复制代码 $rules = array(
'Email' => 'trim|required|valid_email',
'Passwd' => 'required|md5|callback__login_check'
); 复制代码
这里设置的验证规则,$rules['Email']还没有验证的时候,$rules['Passwd']就开始验证了。也就是说是同时验证。
现在按下登录按钮后,效果是这样:
也就是说,还没有执行valid_email验证的时候,__login_check()就执行了。
我需要,等Email格式验证正确后才执行__login_check();
谢谢。
PHP复制代码 <?php
class Login extends Controller {
function Login ()
{
parent ::Controller();
$this->load->helper('form');
$this->load->library('validation');
}
function index ()
{
// 设置验证规则
$rules = array(
'Email' => 'trim|required|valid_email',
'Passwd' => 'required|md5|callback__login_check'
);
$this->validation->set_rules($rules);
// 显示错误域
$this->validation->set_error_delimiters('<div class="errormsg">', '</div>');
// 填充表单
$fields = array(
'Email' => 'Email',
'Passwd' => 'Password'
);
$this->validation->set_fields($fields);
// 自定义错误信息
$this->validation->set_message('valid_email', '电邮地址不正确');
$this->validation->set_message('required', '必填字段不能为空');
if ($this->validation->run() === FALSE)
{
$data = array('title' => '登录', 'css' => 'legacy');
$this->load->view('page/head', $data);
$this->load->view('accounts/login');
$this->load->view('page/foot');
}
else
{
echo "<script>alert('登录完成');</script>";
//redirect ('accounts/login');
}
}
function _login_check ($Passwd)
{
if($this->input->post('Email') == 'test@msn.cn' && $Passwd == md5('123'))
{
return TRUE;
}
else
{
$this->validation->set_message('_login_check', '密码不正确');
return FALSE;
}
}
}
?> 复制代码
[ 本帖最后由 tangwenming 于 2008-6-20 14:26 编辑 ] |
|