Codeigniter - 404将数据发送到控制器

时间:2013-06-02 12:59:59

标签: php forms codeigniter controller http-status-code-404

表格

<?php echo validation_errors(); ?>
   <?php $attributes = array('class' => 'navbar-form pull-right');
      echo form_open('login/checkLogin', $attributes); ?>
       <input class="span2" type="text" placeholder="Username" name="username">
       <input class="span2" type="password" placeholder="Password" name="password">
       <button type="submit" class="btn">Sign in</button>
</form>

Contorller

<?php

class Login extends CI_Controller{  

    public function index(){
        $this->load->view('templates/menu');
    }
    public function checkLogin(){        
        $this->form_validation->set_rules('username', 'Username', 'required|callback_verifyUser');
        $this->form_validation->set_rules('password', 'Password', 'required|callback_verifyPassword');

        if($this->form_validation->run() == false){
            $this->load->view('pages/error');
        }else{

        }
    }
}
?>

模型

<?php

class Login_model extends CI_Model{
    public function login($name, $pass){
        $this->db->select('name, pass');
        $this->db->from('members');
        $this->db->where('name', $name);
        $this->db->where('pass', $pass);

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

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

结构

应用

  • 控制器
    • 的login.php
  • 的观点
    • 模板
      • menu.php

的.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !f
RewriteCond %{REQUEST_FILENAME} !d
RewriteRule .* index.php/$0 [PT,L]

当我按提交返回404时,我的表单位于menu.php中 如果需要更多信息,请问我。

3 个答案:

答案 0 :(得分:0)

检查 .htaccess &amp; php.ini 文件。查看 mod_rewrite ..确保这些内容配置正确,并且您不会意外地使用扩展程序。

也可以尝试代替

 if($this->form_validation->run() == false){
        $this->load->view('pages/error');
    }

 if(!$this->form_validation->run()){
 $this->load->view('pages/error');
}

答案 1 :(得分:0)

首先确保在某些视图中使用mod_rewrite启用了phpinfo();,然后使用此功能:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

答案 2 :(得分:0)

这是我的解决方案:

<强> routes.php文件

$route['templates/menu'] = 'login/checkLogin';

<强> menu.php

echo form_open('templates/menu', $attributes);