CodeIgniter重定向方法不起作用

时间:2015-01-01 13:11:53

标签: php codeigniter

我是codeigniter的新手。我正在创建一个登录表单和进程。但是,当它找到与数据库匹配的所有数据时,它必须重定向到页面(v_home)。但它显示此错误。

  

在此服务器上找不到请求的URL / CodeIgniter / c_home。

我的代码是

**我的表格**

 <?php echo validation_errors(); ?>
 <?php echo form_open('c_verifylogin/index');
   echo form_label("Username: ");
   echo form_input("username");
   echo "<br>";
   echo form_label("Password: ");
   echo form_password("password");
   echo "<br>";
   echo form_submit("","Login");
   echo form_close();

&GT;

varify类

class C_verifyLogin extends CI_Controller {
function __construct() {
    parent::__construct();
    //load session and connect to database
    $this->load->model('m_login','login',TRUE);
    $this->load->helper(array('form', 'url','html'));
    $this->load->library(array('form_validation','session'));
}

function index() {
    $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('v_login');
        } else {
            //Go to private area 
           redirect(base_url('c_home'), 'refresh');
             $this->load->view('v_home');
        }       
 }

 function check_database($password) {
     //Field validation succeeded.  Validate against database
     $username = $this->input->post('username');

     //query the database
     $result = $this->login->login($username, $password);
     if($result) {
         $sess_array = array();
         foreach($result as $row) {
             //create the session
             $sess_array = array( 'username' => $row->username);
             //set session with value from database
             $this->session->set_userdata('logged_in', $sess_array);
             }
      return TRUE;
      } else {
          //if form validate false
          $this->form_validation->set_message('check_database', 'Invalid username or password');
          return FALSE;
      }
  }

}

` <?php 
  function index() {
    $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('v_login');
        } else {
            //Go to private area 
           **redirect(base_url('c_home'), 'refresh');**

        }       
 }

此处V_home是查看主页,c_home是它的控制器。帮助将是适当的

4 个答案:

答案 0 :(得分:1)

将类的名称和函数直接传递给重定向函数:

redirect('c_home/index', 'refresh');

答案 1 :(得分:1)

您使用了重定向方法的错误方法。 Redirect方法将控制器及其功能作为参数。

假设您有一个单独的控制器来加载 c_home 视图,如下所示。

class C_Home extends CI_Controller {

public function index() {
        $this->load->view('c_home');  
 }

}

然后从任何其他控制器中,您可以调用重定向方法,如下图所示加载c_home视图。

redirect('c_home','refresh');

您必须提供控制器的名称,因为加载视图功能名为index 。否则,如果函数具有不同的名称,它将是这样的。

 redirect('c_home/someName','refresh');

所以基本上重定向方法需要 controller / method

答案 2 :(得分:1)

有两种可能的方法来完成这项工作。 使用以下代码

redirect(base_url('index.php/c_home','refresh');

否则转到config目录并打开routes.php 使用当前的控制器更改默认控制器并使用以下代码

redirect(base_url(),'refresh')

请记住,无论你在codeigniter中加载到url中的是什么,都必须通过控制器,所以对于第二种方法,使c_home成为默认控制器。

答案 3 :(得分:1)

试试这个

 redirect(site_url('c_home'), 'refresh');