2015-03-02 7 views
-2

Я не хочу изменять настройку по умолчанию в файле конфигурации, по умолчанию это FALSE. Но я хочу использовать CSRF только контактную форму (другая форма не нужна):Codeigniter: csrf не работает в этом случае

Это мой контроллер:

class Welcome extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     $this->load->helper('form_helper'); 
     $this->load->library('session'); 
    } 

    public function index() 
    { 
     $this->config->set_item('csrf_protection', TRUE); 
     $this->load->view('welcome_message'); 
    } 
} 

End мой взгляд:

<div id="container"> 
    <?php echo form_open(NULL); ?> 

    </form> 
</div> 

Но CSRF не работает она всегда пустое значение:

enter image description here

+0

Установили ли вы ключ шифрования в файле конфигурации? – AdrienXL

+0

Это, кажется, ошибка в рамках. В любом случае CSRF должен быть включен во всех формах. – Philip

+0

i был установлен ключ шифрования в вашем файле конфигурации '$ config ['encryption_key'] = 'tkppinpin';' –

ответ

0

Включили ли вы CSRF на с onfig.php для каждой формы, если enable csrf должен использовать вспомогательные функции формы codeigniter.

http://www.codeigniter.com/user_guide/libraries/security.html

http://www.codeigniter.com/user_guide/helpers/form_helper.html

Изменить

$this->load->helper('form_helper');

Для

$this->load->helper('form');

приложение/Config/config.php

$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'token'; 
$config['csrf_cookie_name'] = 'cookie_monster'; 
$config['csrf_expire'] = 7200; 

Я не думаю, что можно использовать этот способ.$this->config->set_item('csrf_protection', TRUE);

На каждой форме вы должны использовать <?php echo form_open('yourcontrollerfunction');?>

Если Null как на вашем возвращает пустой должна иметь имя контроллера может потребоваться включить index.php, если не установлено HTAccess или маршруты ..

<?php echo form_open('your_controller_name_or_function');?>

<?php echo form_close();?>

или

<?php echo form_open('index.php/your_controller_name_or_function');?>

<?php echo form_close();?>

Смежные вопросы