Я использую 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);
}
Мой метод контроллера page_view
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:
К сожалению, мое обещание, но ничего не меняется, его просто отправляют в другую модель, где можно добавить в базу данных, я просто хочу знать, для других студентов токен после публикации сообщения изменяется, и я не знаю, почему.






Метод «действия» формы определен как
one_lang_faq_add, но код, который вы показываете, - это метод под названиемone_lang_faq_redact. Что с этим?