Я новичок в 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
- это контроллер для нее. Справка будет подтверждена
Вы неправильно использовали метод перенаправления. Метод перенаправления принимает контроллер и его функцию в качестве параметра.
Предположим, у вас есть отдельный контроллер для загрузки представления 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');
Таким образом, в основном метод перенаправления принимает контроллер/метод.
Попробуй это
redirect(site_url('c_home'), 'refresh');
Существует два возможных способа сделать эту работу. Используйте либо следующий код
redirect(base_url('index.php/c_home','refresh');
Else перейдите в каталог config и откройте routes.php. Смените свой контроллер по умолчанию на текущий и используйте следующий код.
redirect(base_url(),'refresh')
Помните, что все, что вы загружаете в url в codeigniter, должно быть через контроллер, поэтому для второго метода сделайте c_home контроллером по умолчанию.
передать имя класса и функции непосредственно функции переадресации:
redirect('c_home/index', 'refresh');