【问题标题】:Codeigniter form validation is not showingCodeigniter 表单验证未显示
【发布时间】:2013-07-22 06:28:21
【问题描述】:

由于某种原因,我的 codeigniter 表单验证未显示在登录页面上 下面给出的是我的登录页面

            <div class="full_w">
        <p>Food4U</p>
        <?php echo validation_errors(); ?>
            <?php echo form_open('staff/valid_login'); ?>
                <label for="city">Select City</label>
                <select name="city" class="text">
                    <option value="">Select City</option>
                    <?php echo $this->front_model->get_Fcities(); ?>
                </select>
                <label for="login">Username:</label>
                <input id="login" name="username" class="text" />
                <label for="pass">Password:</label>
                <input id="pass" name="password" type="password" class="text" />
                <div class="sep"></div>
                <button type="submit" class="ok">Login</button>
                <a class="button" href="">Change Password</a>
            <?php echo form_close(); ?>
            </form>
        </div>

下面给出的是控制器中的功能

    function valid_login()
{
    $this->form_validation->set_rules('city','City','required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('username','Username','required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('password','Password','required|trim');
    if($this->form_validation->run())
    {
        $data = array(
                'username' =>$this->input->post('username'),
                'is_loggedin' => 1
                );
            $this->session->set_userdata($data);
            redirect('staff/member');
    }
    else 
    {
        $this->load->view("dashboard/login");
    }

 }

 function member()
 {   
    $row['content']=$this->load->view("dashboard/member",array(),true);
    $this->load->view("dashboard/template", $row);
 }

function validate_credentials() 
{
    if($this->staff_model->can_login())
    {
        return true;
    }
    else
    {
        $this->form_validation->set_message('validate_credentials','Incorrect Username or Password');
        return false;
    }
}

我的模型函数是

    function can_login()
{
    $this->db->where('DB_User_City',$this->input->post('city'));
    $this->db->where('DB_User_Login',$this->input->post('username'));
    $this->db->where('DB_User_Pass',$this->input->post('password'));

    $query= $this->db->get('frp_db_user');

    if($query->num_rows() == 1)
    {
        return true;
    }
    else 
    {
        return false;
    }
}

如果用户只是单击提交按钮,用户应该会看到一条消息,并且如果用户提供的任何单个值不正确,那么用户还必须查看登录有什么问题,以便用户可以提供正确的信息

【问题讨论】:

  • 当您提交表单时,您会得到什么?是错误还是什么?
  • 什么都不显示,只停留在登录页面
  • 我确定,你已经加载了 form_validation 库?
  • 函数 __construct() { parent::__construct(); $this->load->library('session'); $this->load->library('form_validation'); } // 这是我在控制器中的 __construct 我添加了 form_validation 库
  • 您还需要加载表单助手,将其添加到您的构造函数“$this->load->helper('form');”中。您在视图“validation_errors()”中使用的函数是表单验证助手,而不是表单验证库。

标签: codeigniter login


【解决方案1】:

在您设置验证的每个字段的视图中,会破坏其字段或其他位置 编写这样的代码以显示您的验证错误。

      <div class="full_w">
    <p>Food4U</p>
    <?php echo validation_errors(); ?>
        <?php echo form_open('staff/valid_login'); ?>
            <label for="city">Select City</label>
            <select name="city" class="text">
                <option value="">Select City</option>
                <?php echo $this->front_model->get_Fcities(); ?>
            </select>
            <br />
            <?=form_error('city')?>
            <br />
            <label for="login">Username:</label>
            <input id="login" name="username" class="text" />
            <br />
            <?=form_error('username')?>
            <br />
            <label for="pass">Password:</label>
            <input id="pass" name="password" type="password" class="text" />

            <br />
            <?=form_error('password')?>
            <br />

            <div class="sep"></div>
            <button type="submit" class="ok">Login</button>
            <a class="button" href="">Change Password</a>
        <?php echo form_close(); ?>
        </form>
    </div>

【讨论】:

  • 感谢您提供的解决方案正在运行,但我已经解决了您的想法的问题,实际上我的控制器中还有其他问题,现在我的验证正在运行
【解决方案2】:

您的代码似乎没问题。试试这个

if($this->form_validation->run() == FALSE)
{ 
    //redirect to your login form
}
else
{
    //redirect to dashboard
}

如果您遇到任何问题,请告诉我。

【讨论】:

  • 我已经尝试过了,但仍然没有任何反应,但我没有显示任何错误
猜你喜欢
  • 2018-10-16
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多