【问题标题】:CodeIgniter redirerct method not workingCodeIgniter 重定向方法不起作用
【发布时间】:2015-02-28 03:10:18
【问题描述】:

我是 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();

?>

变量类

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 是它的控制器。将提供帮助

【问题讨论】:

  • c_hone 控制器中要重定向到的函数的名称是什么?

标签: php codeigniter


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你错误地使用了重定向方法。重定向方法以控制器及其功能为参数。

    假设您有一个单独的控制器来加载 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');
    

    所以基本上重定向方法需要控制器/方法

    【讨论】:

      【解决方案3】:

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

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

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

      redirect(base_url(),'refresh')
      

      请记住,无论您在 codeigniter 中加载到 url 中的任何内容都必须通过控制器,因此对于第二种方法,请将 c_home 设为默认控制器。

      【讨论】:

        【解决方案4】:

        试试这个

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-15
          • 2013-08-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多