403 Запрещенный доступ при вызове функции входа CodeIgniter 3x - PullRequest
0 голосов
/ 26 апреля 2019

Я кодирую приложение на 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-клиенте. Я застрял на той же проблеме в течение нескольких часов; -;

1 Ответ

0 голосов
/ 26 апреля 2019

Проблема с именем вашего контроллера.Когда вы просматриваете свой URL, он указывает на папку system codeigniter.Возможно, вам придется изменить имя контроллера, чтобы исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...