Метод перенаправления CodeIgniter не работает

0

Я новичок в 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();

?>

класс 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 - это контроллер для нее. Справка будет подтверждена

  • 0
    как называется функция в контроллере c_hone, на которую вы хотите перенаправить?
  • 0
    индексная функция.
Теги:
codeigniter

4 ответа

1

Вы неправильно использовали метод перенаправления. Метод перенаправления принимает контроллер и его функцию в качестве параметра.

Предположим, у вас есть отдельный контроллер для загрузки представления 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');

Таким образом, в основном метод перенаправления принимает контроллер/метод.

1

Попробуй это

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

Существует два возможных способа сделать эту работу. Используйте либо следующий код

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

Else перейдите в каталог config и откройте routes.php. Смените свой контроллер по умолчанию на текущий и используйте следующий код.

redirect(base_url(),'refresh')

Помните, что все, что вы загружаете в url в codeigniter, должно быть через контроллер, поэтому для второго метода сделайте c_home контроллером по умолчанию.

1

передать имя класса и функции непосредственно функции переадресации:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню