CodeIgniter form_validation无法正常工作

时间:2015-12-30 14:53:49

标签: php forms codeigniter validation

我是php的新手。我的设置是在ubuntu 14.04 LTS上点亮。 我已经在在线教程的帮助下创建了一个Login系统。 我已经在autoload.php文件中进行了更改

$autoload['libraries'] = array('database', 'form_validation');
$autoload['helper'] = array('url', 'form');

出乎意料的是,如果用户名和密码字段都为空,并且按下了“登录”按钮,则会显示错误(“用户名字段为空”...)。 此外,在Mozilla Firefox中,按下按钮时页面保持不变 在Google Chrome中,页面加载到about:blank。

如果我在问题格式中犯了错误,请帮助和抱歉。

我的控制器:LoginController.php

<?php

class LoginController extends CI_Controller{

public function index(){

    $this->load->view('login');
}

public function checkLogin(){
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username' , 'Username' , 'required|valid_email');
    $this->form_validation->set_rules('password' , 'Password' , 'required|callback_verifyUser');

    if($this->form_validation->run() == false){
        $this->load->view('login');

    }else{
        redirect('HomeController/index');
    }

}
public function verifyUser(){
    $name = $this->input->post('username');
    $pass = $this->input->post('password');

    $this->load->model('LoginModel');

    if($this->LoginModel->login($name, $pass)){
        return true;
    }
    else{
        $this->form_validation->set_message('verifyUser', 'Incorrect email or password. Please try again.');
        return false;
    }
}

}

我的观看文件:login.php

<!DOCTYPE HTML>
<html>
    <head>
        <title>CI Login System</title>
    </head>
    <body>
        <h1>Login</h1>
        <?php echo validation_errors(); ?>
        <?php echo form_open('LoginController/checkLogin'); ?>
        Username<br/>
        <input type="text", name="username"/><br/>
        Password<br/>
        <input type="text", name="passsword"/><br/>
        <input type="submit", value="Login", name="submit"/>
        </form>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您的错误在HTML代码中。

Username<br/>
<input type="text", name="username"/><br/>
Password<br/>
<input type="text", name="passsword"/><br/>
<input type="submit", value="Login", name="submit"/>

这是错误的:

  1. 您不要将逗号放在HTML标记中。
  2. 密码输入应为密码类型。
  3. 您的密码输入名称有误,它有一个额外的s,不应该考虑这条线:

    $pass = $this->input->post('password');

  4. 测试一下:

    <input type="text" placeholder = "Username" name="username" required/><br>
    <input type="password" placeholder = "Password" name="password" required/><br>
    <input type="submit" value="Login" name="submit"/>
    

    我已编辑了我的答案以插入required属性。

    但兼容性并不像它应该的那么大:

    enter image description here

    您还可以使用Javascript form validation方法

答案 1 :(得分:1)

不,它永远不会奏效。你是 onflicting Normal <form>和Codeigniter form Code

表单代码应该是

echo form_open('LoginController/checkLogin');

$userName = array(
  'name'        => 'username',
  'id'          => 'username'
);
$password = array(
  'name'        => 'password',
  'id'          => 'password'
);


echo "<label>Username</label>";
echo form_input($userName);

echo "<label>Password</label>"; 
echo form_password($password);

echo form_submit('mysubmit', 'Login');
echo form_close();
  1. How to Create a Contact Form In CodeIgniter
  2. CodeIgniter Form Validation