Я использую csrf, чтобы опубликовать мою форму выглядит следующим образом:
<form action="<?php echo base_url()."lang_control/one_lang_faq_add"?>" accept-charset="UTF-8" method="post">
<div class="form-group">
<label>ВОПРОС:</label>
<input class="form-control faq_add_quest_input" placeholder="Введите вопрос" name="faq_quest">
<input type="hidden" class="faq_add_id_input" name="lang_id">
</div>
<div class="form-group">
<label>ОТВЕТ:</label>
<input class="form-control faq_add_answer_input" placeholder="Введите ответ" name="faq_answer">
</div>
<input type="hidden" name="<?php echo $csrf['name'];?>" value="<?php echo $csrf['hash'];?>">
<button type="submit" class="btn btn-primary" >Submit</button>
</form>
В конфиге я установил:
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_exclude_uris'] = array();
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
Мой метод контроллера form_action
public function one_lang_faq_add(){
$this->load->model('one_lang_redact');
$answer = $this->input->post('faq_answer');
$quest = $this->input->post('faq_quest');
$id = $this->input->post('lang_id');
$array = array('answer'=>$answer,'quest'=>$quest,'id'=>$id);
echo $this->one_lang_redact->lang_faq_add($array);
}
Метод контроллера просмотра моей страницы
public function __construct(){
parent::__construct();
$this->load->database();
$this->input->post(NULL, TRUE);
$this->input->get(NULL, TRUE);
$this->load->library('session');
$this->load->helper('url');
$this->load->helper('html');
$this->load->helper('form');
$this->_csrf = array(
'name' => $this->security->get_csrf_token_name(),
'hash' => $this->security->get_csrf_hash()
);
}
public function one_lang_redact($id){
$this->load->model('one_lang_redact');
$CFG =& load_class('Config', 'core');
header('Content-type: text/html; charset=' . $CFG->item('charset'));
$one_lang = $this->one_lang_redact->select_one_lang($id)->row();
$lang_faq = $this->one_lang_redact->select_lang_faq($id)->result();
$key = array("lang" => $one_lang, "lang_faq" => $lang_faq, "csrf"=>$this->_csrf);
$this->load->view('one_lang.php',$key);
}
А именно, csrf_regenerate
должен обновлять мой токен csrf после каждого запроса
Но этого не происходит, токен открывается только тогда, когда я вручную удаляю cookie
Помогите, что нужно сделать, чтобы для каждого поста запрос csrf был разным
Пожалуйста, помогите мне D: