Я кодирую приложение на Ubuntu. Приложение работает без проблем. Но эта проблема возникает, когда я решил запустить приложение на основе CI локально, используя XAMPP в Windows.
Front end работает без проблем. Но когда я попытался войти в систему, он выдал «Ошибка 403 Доступ запрещен! У вас нет прав доступа к запрошенному объекту. Он либо защищен от чтения, либо не читается сервером». Кажется, что приложение не может вызвать функцию loginAction из контроллера «System», в то время как в моем клиенте Ubuntu это работало без ошибки 403.
http://localhost/myProject/System/loginAction
Я пробовал эту тему, но она не подходит для моего случая.
Ошибка CodeIgniter 403
Ранее я установил разрешение для папки проекта на 755 (но это не влияет на разрешение на самом деле в Windows, верно?)
Я также сделал что-то для файла config.php в следующих строках:
$config['base_url'] = 'http://localhost/myProject/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
Мой код:
Вид входа в систему (login.php):
<form action="<?= base_url(); ?>System/loginAction" method="POST">
<input type="username" name="username" class="form-control" placeholder="Username" required maxlength="50" autocomplete="off">
<input type="password" name="password" class="form-control" placeholder="Password" required maxlength="30">
<button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button>
</form>
Контроллер (System.php):
function loginAction() {
$username = $this->input->post('username');
$password = $this->input->post('password');
$where = array(
'username' => $username,
'password' => md5($password),
);
$cekLogin = $this->Admin_Model->cekLogin('mytb', $where)->num_rows();
if($cekLogin > 0 && $cekLogin < 2) {
$dataUser = $this->Admin_Model->getUserData('mytb', $where);
$dataSession = array(
//some session data here
);
if($dataUser[0]['activeStatus'] == '1') {
$this->Admin_Model->updateLastLogin($dataUser[0]['idUser']);
$this->session->set_userdata($dataSession);
redirect(base_url().'Admin/');
} else {
$this->session->set_flashdata('alert_warning', 'This username is in inactive status!');
redirect(base_url().'Login/');
}
} else {
$this->session->set_flashdata('alert_gagal', 'Wrong username or password!');
redirect(base_url().'Login/');
}
}
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
* Примечание. Я не коснулся .htaccess, который находится в папке "application".
Я ожидаю, что приложение может выполнить процесс входа в систему через localhost в Windows-клиенте точно так же, как это делает localhost в Ubuntu-клиенте. Я застрял на той же проблеме в течение нескольких часов; -;