【问题标题】:CodeIgniter form_validation not working properly [duplicate]CodeIgniter form_validation 无法正常工作 [重复]
【发布时间】:2016-04-04 13:28:31
【问题描述】:

我是 php 新手。我的设置是 ubuntu 14.04 LTS 上的灯。 我在在线教程的帮助下创建了一个登录系统。 我已经将autoload.php 文件更改为

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

出乎意料的是,当用户名和密码字段都留空并按下登录按钮时,会显示 no 错误(即“用户名字段为空”...)。 此外,在 Mozilla Firefox 中,按下按钮时页面保持不变 在谷歌浏览器中,页面加载到 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>

【问题讨论】:

  • 你能在这里分享你的错误吗?
  • 我已经编辑了这个问题。没有错误。但是,我正在观看的教程中显示的“特定字段为空”的错误不会出现

标签: php forms codeigniter validation


【解决方案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-&gt;input-&gt;post('password');

测试一下:

<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 属性。

但兼容性并没有应有的那么大:

您也可以使用Javascript form validation 方法

【讨论】:

  • 感谢您的宝贵时间!我已应用更改,但仍未生成“空字段”错误!
  • 所以我们必须应用一个必需的属性,我将编辑我的答案。
  • 你这个摇滚人,刚刚成功了!!
【解决方案2】:

不,它永远不会起作用。您正在使用 Normal &lt;form&gt; 和 Codeigniter 表单代码

表单代码应该是

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

【讨论】:

  • 谢谢,但仍然没有生成“空字段”错误。
  • @MohitGarg 检查第二个链接。
猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
相关资源
最近更新 更多