Действие, которое вы запросили, не разрешено. Кодигнатор


Я пытаюсь создать простую систему входа в codeigniter. Когда я нажимаю на кнопку входа в систему, я получаю сообщение об ошибке:

Действие, которое вы запросили, не разрешено.

Когда я открываю свою консоль, я вижу следующее:

СООБЩЕНИЕ http://localhost/PHP/PROJECT/CodeIgniter/ 403 (Запрещено)

Вот мое мнение:

<body>
    <h1>LOG IN!</h1>
    <form action="" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" >
        <label for="password">Password</label>
        <input type="password" id="password" name="password" >
        <br>
        <button id="btn_login" name="btn_login" >LOG IN!</button>
    </form>
    <div class="errors" ><?php echo validation_errors(); ?></div>
</body>

Это моя модель:

<?php 
class User_model extends CI_Model {
    public $m_sUsername;
    public $m_sPassword;
    public $m_sEmail;
    public $m_sPicture;

    function __construct()
    {
        parent::__construct();
    }

    function get_user($username, $password)
    {
        $this->db->select("username","password");
        $this->db->from(user);
        $this->db->where('username',$username);
        $this->db->where('password',$password);
        $this->db->limit(1);
        $query = $this->db->get();
        return $query->num_rows();
    }
}

А это мой контроллер:

<?php

class Login extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->library('session');
        $this->load->helper('form');
        $this->load->helper('url');
        $this->load->helper('html');
        $this->load->database();
        $this->load->library('form_validation');
        $this->load->model("User_model", "", true);
    }

    public function index()
    {
        if ($this->input->server('REQUEST_METHOD') == 'POST') {
            $username = $this->input->post("username");
            $password = $this->input->post("password");
            $this->form_validation->set_rules("username", "Username", "trim|required");
            $this->form_validation->set_rules("password", "Password", "trim|required");

            if ($this->form_validation->run() == FALSE) {
                //validation fails
                echo "Vul alle velden in";
            } else {
                //validation succeeds
                if ($this->input->post('btn_login') == "Login") {
                    //check if username and password is correct
                    $usr_result = $this->User_model->get_user($username, $password);
                    if ($usr_result > 0) { //active user record is present
                        echo 'Ingelogd!';
                    } else {
                        echo "Wrong!";
                    }
                }
            }
        }

        $this->load->view("admin/login_view.php");
    }
}

Кто-нибудь знает, как решить эту проблему?

Спасибо!

Author: Nagesh Katke, 2015-04-24

4 answers

Проверьте свой config.php Если,

$config['csrf_protection'] = TRUE;

Если установлено значение true, вам нужно использовать form_open(), это автоматически добавит ci_csrf_token. В противном случае вы можете просто установить FALSE.

Но желательно установить его равным TRUE. Но вам нужно убедиться, что весь ваш запрос включает ci_csrf_token, включая запрос AJAX.

Https://ellislab.com/codeigniter/user-guide/helpers/form_helper.html

 10
Author: 3s2ng, 2017-06-10 10:08:22

Попробуйте это

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">
 9
Author: Faran Ali, 2015-04-24 12:18:32

У меня это был кэш браузера, как только я его очистил, форма снова начала работать.

 0
Author: Azmeer, 2016-01-26 15:15:46

Для меня проблема заключалась в том, что я загружал страницу в индекс, я изменил ее следующим образом, и это сработало:

public function index()
{
    // Load Login Page
    redirect('login/login_page','refresh');

}

public function login_page()
{
    $data['title'] = 'Login Page';

    $this->load->view('templates/header', $data);
    $this->load->view('users/login_view', $data);
    $this->load->view('templates/footer');
}
 0
Author: Ana Houa, 2016-10-27 00:28:36