Yii2 功能很是强大,组件化编程很高大上,全栈编程很容易,但我觉得日常的开发中还是有很大一部分人会去手写表单之类的,为了配合前端的工作,或者懒得再去学这套堪比一门新语言的组件语法....
Yii2默认是对表单采取 CSRF 验证的,近些年 CSRF 也越来越被人们所在意,它比 XSS 更阴险更精明,有兴趣的可以百度下网络安全编程方面的相关知识,这里就不再累述了。
如果是自己手写的表单,且没有关闭 Yii2 自身的 CSRF 验证的话,就会出现 “Unable to verify your data submission” 的错误提示,而网上千篇一律的都是教你如何关闭 CSRF 验证,我也是呵呵了,居心何在?安全编程要贯彻到底,如果你不想过几年被搞网络安全的挤下去么。有几篇教你如何使自己的表单符合 CSRF 验证,但都是 Yii 版本的,组件的写法都与现在的 Yii2 大有不同
下面给出正确的表单写法
FormValidate
即在表单中添加一个
name :
\Yii::$app->request->csrfParam;
value:
\Yii::$app->request->getCsrfToken();
的input hidden元素即可
输出 request 组件其实就能看到一个公共的成员属性
public $csrfParam = '_csrf';
当然你直接写也可以