【发布时间】:2017-05-28 23:33:59
【问题描述】:
一开始我关闭了我的 CSRF 只是为了简单的原因让我的表单/ajax 工作。现在,当我打开它并尝试使用 CSRF 的输入和内容时,什么都不起作用。我的表单没有提交,或者当它刷新我的整个页面时,我不能让这种情况发生。这是我当前的代码。
form method="post">
<input type="text" name="vip_text_box" id="vip" value="<?php echo $total_amount ?>"> <br><br>
<input type="submit" id="submit" value="Redeem" onclick="return rebate_amount()">
<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">
</form>
还有 AJAX:
function rebate_amount(){
var value = document.getElementById('vip').value;
var datastring = 'vip='+value;
var url = base_url + '/index.php/home/redeeming_form_value';
$.ajax({
type : 'post',
url : url,
data: datastring,
cache: false,
success: function(html){
$('#vip_point_redeeming').html(html);
}
});
return false;
}
请记住。当配置文件中的 CSRF 关闭时,这一切都有效。但我认为 CSRF 与 form / ajax 存在问题。
【问题讨论】:
-
您的 AJAX 请求构造了一个 POST 操作,但未能提供 CSRF 令牌。当 CodeIgniter 收到 POST 操作时,它找不到 TOKEN 并在你有机会运行任何代码之前关闭所有东西。
标签: php ajax forms codeigniter csrf