蓝
- 蓝 回答了问题 Layout 中的数据获取问题
首先,楼上说的 “在基类控制器里获取” 这个方案 肯定是 可行的,这里 另外提供一个 低耦合 的方案
1、写一个行为,比如叫
app\lan\MyBehavior
,在这个 行为 中提供一个方法,比如叫getLatestArticle
,在这个方法里 读取数据库 返回 最近发布的文章2、配置文件中,将这个行为附加到 当前的 控制器中,这样 每一个被请求的控制器 就都有了
getLatestArticle
这个方法'on beforeAction' => function() { Yii::$app->controller->attachBehavior('MyBehavior', 'app\lan\MyBehavior'); }
3、footer 里这样调用
<?= $this->context->getLatestArticle() ?>
对所有的控制器 不需要 任何代码的改动
有个简单的做法,在 配置项
controllerMap
里 配置个映射就可以了'controllerMap' => [ 'TestABC' => 'app\controllers\TestABCController' ]
这样
/test-a-b-c
和/TestABC
两种 都可以访问了相关文档
https://www.yiiframework.com/doc/guide/2.0/zh-cn/structure-applications#controllerMap参考这篇文章
Yii2使用驼峰命名的形式访问控制器- 蓝 回答了问题 怎么判断PHP是yum安装还是编译安装的?
yum list installed | grep php
能搜到 说明是
yum
安装的
搜不到 说明不是yum
安装的,也有可能是 其它包管理工具装的,比如apt-get
,brew
等等
是不是编译安装的,除了 装 的那个人,别人 无从知道
甚至 我可以到一个相同的操作系统上 copy 相关的文件过来,这个算 编译安装 么? orderBy(new \yii\db\Expression('case when id in (1, 3) then 1 else 0 end'));
拿到数据库权限后,如何修改的 authorized_keys 文件呢?
@jijiniaoa mysql 默认有 secure_file_priv 的限制,难道 你手动把这个限制 关掉了?
再说 select into outfile 不能覆盖现有文件,只能导出到一个 新文件- 蓝 回复了话题 微信小程序被黑客攻击痕迹查找及防御
拿到数据库权限后,如何修改的 authorized_keys 文件呢?
- 蓝 回答了问题 Yii2 初级版怎么配置数据库操作记录 记录到数据库
配置文件里配置一下 log 就可以了吧
[ 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning', 'trace'], 'categories' => ['yii\db\*'] ]
不过,写日志到数据库的操作 也是在 操作数据库,会不会出现 死循环,就 不得而知了
可以配合 sleep 实现
* * * * * ... * * * * * sleep 1; ... * * * * * sleep 2; ... * * * * * sleep 3; ... ...... * * * * * sleep 59; ...
提醒大家不要被 此文 误导
都用了 yii 了,这些基本的攻击防护,框架 肯定考虑到了,只要 规范的写代码,yii下 不会有这些漏洞的另外:对于这些攻击的防护,不应该用 过滤 的方法,因为 这些基本的标点符号,还有 select update 这些很常用的单词 都是 正常交流 所必不可少的,粗暴的过滤掉 会改变 内容的含义
假设 你做的是一个讨论 正则表达式,html 及 sql 的论坛,按他这样过滤,也就 不用讨论啥了