Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在codeigniter中提交自定义表单后检查CSRF令牌是否有效_Codeigniter - Fatal编程技术网

如何在codeigniter中提交自定义表单后检查CSRF令牌是否有效

如何在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自定义表单,在这个表单中,我在表单提交后使用了CSRF令牌。我想在表单提交后在控制器中检查CSRF令牌是否有效,有人能帮我解决这个问题吗

PHP表单代码


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>