如何在codeigniter中提交自定义表单后检查CSRF令牌是否有效
我正在处理CodeIgniter自定义表单,在这个表单中,我在表单提交后使用了CSRF令牌。我想在表单提交后在控制器中检查CSRF令牌是否有效,有人能帮我解决这个问题吗 PHP表单代码如何在codeigniter中提交自定义表单后检查CSRF令牌是否有效,codeigniter,Codeigniter,我正在处理CodeIgniter自定义表单,在这个表单中,我在表单提交后使用了CSRF令牌。我想在表单提交后在控制器中检查CSRF令牌是否有效,有人能帮我解决这个问题吗 PHP表单代码 CodeIgniter会自动为您执行此操作。如果无效,它将执行show_error和show_error('不允许您请求的操作',403) 相关函数可在/system/core/security类中找到,函数:csrf\u verify()和csrf\u show\u error()(如果无效) 如果您现在已经
CodeIgniter会自动为您执行此操作。如果无效,它将执行
show_error
和show_error('不允许您请求的操作',403)代码>
相关函数可在/system/core/security
类中找到,函数:csrf\u verify()
和csrf\u show\u error()
(如果无效)
如果您现在已经了解,如果您在配置中启用了csrf,但没有相应的csrf隐藏字段或使用form_open
(为您添加字段),那么当您发布请求时,它将失败,并显示上述消息。AJAX请求也是如此-要使AJAX请求自动化,您可以将其添加到页面顶部,无论哪里有AJAX请求:
<script type="text/javascript">
token["<?php echo $this->security->get_csrf_token_name(); ?>"] = "<?php echo $this->security->get_csrf_hash(); ?>";
jQuery.ajaxSetup({data: token, type: "POST"});
</script>
令牌[“”]=“”;
ajaxSetup({data:token,键入:“POST”});
csrf值将不在$\u POST中。系统核心csrf_verify()在中设置csrf值$_POST@vicky这是一个ajaxSetup函数,它与服务器端的get或post无关。这只是说在ajax请求post时,将令牌作为变量发送。
<script type="text/javascript">
token["<?php echo $this->security->get_csrf_token_name(); ?>"] = "<?php echo $this->security->get_csrf_hash(); ?>";
jQuery.ajaxSetup({data: token, type: "POST"});
</script>