gpt4 book ai didi

php - Codeigniter 表单验证回调检查多个字段

转载 作者:可可西里 更新时间:2023-11-01 13:35:05 25 4
gpt4 key购买 nike

我已经为登录设置了这个 Controller :

<?php
class Login extends Controller {

function __construct() {
parent::Controller();
$this->form_validation->set_error_delimiters('', '');
$this->output->enable_profiler(TRUE);
}

function index(){

redirect('/login/terminal');

}

function terminal() {
// terminal login

$this->form_validation->set_rules(array('username','password'), 'Username', 'callback_terminal_login_check[$username,$password]');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login_header');
$this->load->view('login_terminal');
$data['version'] = $this->master->GetVersion();
$this->load->view('login_footer', $data);
} else {
redirect('/terminal');
}

}

function terminal_login_check($username,$password) {
// callback function to perform terminal login

if ($this->authentication->DoTerminalAuthentication($username,$password)) {
echo $username;
return TRUE;
} else {
$this->form_validation->set_message('terminal_login_check', 'Invalid');
return FALSE;
}


}

}

我正在查看的是执行表单验证回调的行 >> $this->form_validation->set_rules(array('username','password'), 'Username', 'callback_terminal_login_check[$用户名,$密码]');

我知道这是不对的。基本上我想要做的是根据 Authentication->DoTerminalAuthentication 模型检查用户名和密码以处理用户的登录。我想传递 $username$password 表单域。如果有帮助,这是我的表单 View :

<div id="title">Terminal Login</div>
<?php
if (validation_errors()) {
echo '<div id="error">' . validation_errors() . '</div>';
}
?>

<?=form_open('login/terminal');?>
<?=form_label('Username', 'username')?><br />
<?=form_input(array('id'=>'username','name'=>'username','value'=>set_value('username')))?><br />
<?=form_label('Password', 'password')?><br />
<?=form_password(array('id'=>'password','name'=>'password'))?><br />
<?=form_submit(array('name'=>'passwordsubmit','value'=>'Login >>'))?><br />
<?=form_close();?>

最佳答案

在您的 Controller 中使用它来设置您的验证规则。

$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required|callback_terminal_login_check');

还有一个像这样的回调。如果您要将帖子数据与数据库进行比较,我会使用模型。

function terminal_login_check() 
{
$username = $this->input->post('username');
$password = $this->input->post('password');

// LOAD MODEL HERE

if ($this->authentication->DoTerminalAuthentication($username, $password))
{
echo $username;
return TRUE;
}
else
{
$this->form_validation->set_message('terminal_login_check', 'Invalid');
return FALSE;
}
}

编辑 2013-07-09:在密码验证规则中添加了必填字段,这样如果有人没有添加密码,您就不必访问数据库。

关于php - Codeigniter 表单验证回调检查多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com