我已经按照CodeIgniter中的学习教程进行了操作,我正在使用相同的程序在我的参考文献(下面发布的链接)上创建一个程序,其中有一个登录表单。我对函数没有任何问题,我只想将validation_errors()放在textfield的右侧,如果用户名为空或不正确,则错误消息将显示在textfield的右侧。有没有办法做到这一点?或者我应该使用javascript而不是使用此validation_errors()?希望有人能帮助我。谢谢!
这是VIEW中的代码:
<h3>Log-In with CodeIgniter</h3>
<?php echo validation_errors(); ?>
<?php echo form_open('verifylogin'); ?>
<label for="username">Username:</label>
<input type="text" size="20" id="username" name="username"/>
<br/>
<label for="password">Password:</label>
<input type="password" size="20" id="password" name="password"/>
<br/>
<input type="submit" value="Log-In"/>
</form>
这是CONTROLLER中的代码:
function index() {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run()==FALSE) {
$this->load->view('login_view');
}
else {
redirect('home', 'refresh');
}
}
function check_database($password) {
$username=$this->input->post('username');
$result=$this->user->login($username, $password);
if($result) {
$sess_array=array();
foreach($result as $row) {
$sess_array=array('id'=>$row->id, 'username'=>$row->username);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
else {
$this->form_validation->set_message('check_database', 'Invalid username or password');
return FALSE;
}
}
参考:http://www.codefactorycr.com/login-with-codeigniter-php.html
答案 0 :(得分:2)
<h3>Log-In with CodeIgniter</h3>
<?php if (form_error('password')=="Invalid username or password")
{
echo form_error('password');
}
?>
<?php echo form_open('verifylogin'); ?>
<label for="username">Username:</label>
<input type="text" size="20" id="username" name="username"/><?php echo form_error('username'); ?>
<br/>
<label for="password">Password:</label>
<input type="password" size="20" id="password" name="password"/><?php echo form_error('password'); ?>
<br/>
<input type="submit" value="Log-In"/>
</form>
答案 1 :(得分:1)
<?php echo form_open('verifylogin'); ?>
这将一次显示FORM的所有错误 - 它们以批量错误的形式出现(未拆分)
<?php echo form_error('username'); ?>
<?php echo form_error('password'); ?>
这是显示各个错误的正确方法,CodeIgniter为您提供单独显示错误的方法
showing individual errors in codeigniter
并搜索单独显示错误
您可以在输入字段一侧的span标签中显示它们 - 以获得您想要的O / P种类
答案 2 :(得分:0)
这就是我做的......
$this->form_validation->set_message('check_database', '<br/><br/>Invalid username or password');
我将<br/>
添加到无效的用户名或密码中,以便它不会放入密码字段。