作为自己的周总结,平时遇到的问题,以及一不小心踩的坑,记录下来自己当复习: 表单验证 表单验证,两个参数中至少需要一个(2个以上): public function rules() {...获取url中的host信息: # http://localhost Yii::$app->request->getHostInfo() 获取url中的路径信息(不包含host和参数): Yii...::$app->request->getPathInfo() 获取不包含host信息的url(含参数): # /public/index.php?...Yii::app()->request->url 只想获取url中的参数部分: # r=news&id=1 Yii::$app->getRequest()->queryString 获取某个参数的值...\helpers\VarDumper; // 使用 VarDumper::dump($var); // 使用2 第二个参数是数组的深度 第三个参数是是否显示代码高亮(默认不显示) VarDumper
FROM子句 where() yii\db\Query 指定SQL语句当中的WHERE子句 groupBy() yii\db\Query 指定SQL语句当中的GROUPBY子句 having() yii...\db\Query 指定SQL语句当中的HAVING子句 join() yii\db\Query 指定SQL语句当中的JOIN子句 limit() yii\db\Query 指定SQL语句当中的LIMIT...子句 offset() yii\db\Query 指定SQL语句当中的OFFSET子句 orderBy() yii\db\Query 指定SQL语句当中的ORDERBY子句 union() yii\db...where()成员方法属于yii\db\ActiveQuery的父类yii\db\Query。...SQL语句当中的WJHERE子句 $params yii\db\Query 当前Query实例对象 {return} yii\db\Query 当前Query实例对象 下面介绍常用的写法: 在定义非常简单的查询条件的时候
/test/models/Test.php public function getHabitusArticle() { /** * 第一个参数为要关联的字表模型类名称...($query, ['model'=> $model]); } 得到的SQL: SELECT * FROM `test` LEFT JOIN `habitus_article` ON `test...用好yii\db\Query查询构建器包括关联表查询,尽量不要直接写sql语句。 控制器和视图中所用的字典类,获取数据的方法都应写到Model里。...可参考Yii2的yii\db\Query的 andFilterWhere等方法和操作符格式 andFilterWhere可放心使用,搜索时字段非空才会执行。...http://www.yiichina.com/doc/guide/2.0/db-query-builder backend/modules/test/models/TestSearch.php public
extends \yii\base\Model{ const SCENE_ADD = 'add'; //添加场景 const SCENE_EDIT = 'edit'; //编辑场景 public...$article->save()){ throw new \yii\base\ErrorException('添加文章失败'); } return $article; } public...$this->_article->save()){ throw new \yii\base\ErrorException('编辑文章失败'); } return $this->_article...ArticleForm([ 'scenario' => ArticleForm::SCENE_ADD, ]); //菜鸟注意:如果前端用ActiveForm就别像我这样传第2个参数空字符串...= new ArticleForm([ 'scenario' => ArticleForm::SCENE_EDIT, ]); //菜鸟注意:如果前端用ActiveForm就别像我这样传第2个参数空字符串
在 DataGrid 小部件中的列是在 yii\grid\Column 类中进行配置的。它代表一个模型属性,并可以进行过滤和排序。 GridView 列显示常用操作 <?...$model) { return $model->order_num; } ], // 是否显示某列:意思是如果参数...php php namespace app\models; use Yii; use yii\base\Model; use yii\data\ActiveDataProvider; class ArticleSearch...//在视图中,会调用级联的article_type表,调用他的分类名,所以为了性能,在这里join一下 $query->join('articleType');
获取执行的 SQL 语句 $query = User::find()->where(['LIKE', 'name', 'php%', false]); $commandQuery = clone $query...%' $query = User::find()->where(['LIKE', 'name', 'php%', false]); 执行 SQL 查询并缓存结果 调用yii\db\Connection的...$id = Yii::$app->request->get('id'); $collection = Yii::$app->db->cache(function (Connection $db) use...打印数据 \yii\helpers\VarDumper::dump($var); // 第二个参数是数组的深度 第三个参数是是否显示代码高亮(默认不显示) \yii\helpers\VarDumper...到期后自动退出登陆) config/web.php中的components组件数组中。
/vendor/autoload.php'); require(DIR . '/../../vendor/yiisoft/yii2/Yii.php'); require(DIR . '/../.....这些组件的信息是在引入进来的几个配置文件中配置的,Yii组件就是使用这些参数信息进行注册与创建的。 ...好了,回到\yii\base\Application类的构造函数,这个函数最后调用了\yii\base\Component类的构造函数,但\yii\base\Component类是没有构造函数的,不过它继承了...类最终也继承了\yii\base\Object类,\yii\base\Object类是支持属性的,所以yii\web\Application类也支持属性(关于属性,可以参考我的另一篇博文:yii2之属性...,我们可以这样来访问:Yii::$app->db,这个Yii::$app就是yii应用实例,也就是\yii\web\Application类的实例,但是\yii\web\Application类和它的父类
DAO Yii的数据库读取对象,在PDO之上,DAO后有了Query Builder和AR 基本使用方法 获得数据库连接 $conn = Yii::$app->db; 执行数据库查询语句...->getHostInfo(); 获得URL问号后的参数字符串 Yii::$app->request->getQueryString() 返回服务器端口 Yii::$app->request...基本用法 使用Query Builder需要使用的类 $query = (new \yii\db\Query()); // yii2使用Query对象来采集SQL的各个部分,然后由Query Builder...关键参数 去掉浏览器缓存 'appendTimestamp' => true // 在web.php里的components - assetManager 发布资源筛选 public $...400: 错误的请求。可能通过用户方面的多种原因引起的,例如在请求体内有无效的JSON 数据,无效的操作参数,等等。 401: 验证失败。
,当query()不是,他返回一个代表结果集的对象 // YII中的CDbTransaction类用于事务 // 首先,建立一个连接 $connection = Yii::app()->db; //...// 使用CDbDataReader对象的bindColumn()方法将结果集中的列绑定到PHP变量。...// 因此,读取一行记录,列值将自动填充到对应的PHP对象中 // 比如这样: $connection = Yii::app()->db; $sql = "SELECT username, email...u INNER JOIN tbl_profile p ON u.id = p.user_id WHERE u.id =:id' // yii提供了一种构建SQL的机制(也就是说不用自己写长长的SQL...) // 首相要实例化一个CDbCommand对象 $command = Yii::app()->db->createCommand(); // 注意参数留空了。。
access-token=xxxxxxxx, 由于大多数服务器都会保存请求参数到日志, 这种方式应主要用于JSONP 请求,因为它不能使用HTTP头来发送 access token OAuth 2 :...使用者从认证服务器上获取基于 OAuth2 协议的 access token, 然后通过 HTTP Bearer Tokens 发送到 API 服务器。...2.使用数据迁移的方式 进入项目根目录打开控制台输入以下命令: php yii migrate/create add_access_token_to_user 打开 你的项目目录/console/migrations...php namespace api\models; use Yii; use yii\base\NotSupportedException; use yii\behaviors\TimestampBehavior...php namespace api\models; use Yii; use yii\base\Model; ... ...
\\base\\ErrorException", "file": "/usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Shared/String.php...", "line": 490, "stack-trace": [ "#0 [internal function]: yii\\base\\ErrorHandler->handleError(8...')", "#2 /usr/share/nginx/html/ycsh_automat/Classes/PHPExcel/Reader/Excel5.php(1362): PHPExcel_Shared_String...的 ConvertEncoding() 方法的的第一个条件判断不满足 解决方案 修改文件 Classes\PHPExcel\Shared\String.php 的 ConvertEncoding()...方法的的第一个条件判断,如下 附录 网上的经验,基本为 php iconv() : Detected an illegal character in input string, 测试发现都无法解决我的问题
yii的默认方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中进行初始设置,也可以在控制器中改写defaltAction='action'。...2.添加独立模块 yii可以在modules文件夹中添加自定义模块,添加完成后在web.php中的$config中的'modules'=[id=..class=...]设置模块的开关。...5.布局模式 yii会默认开启布局模式,其布局模板为view中的layout中的main.php,我们可以在veder/yiisoft/yii2/web/controller.php基础类中public...方法为: $res=(new yii\db\Query())->select()->from()->leftJoin()->where->()->all(); 其中where语句较为复杂: where(...'in','id',$array)或where('id'=>$array) 具体可以查看http://www.yiichina.com/doc/guide/2.0/db-query-builder中对where
该漏洞只是php 反序列化的执行链,必须要配合unserialize函数才可以达到任意代码执行的危害。...二、漏洞影响 Yii2 <2.0.38 三、复现过程 目前该框架版本已经到2.0.42了,而复现该漏洞是因为最近的CTF比赛中已经出现了好几次该框架漏洞的改造题目了,所以我觉得有必要好好对该漏洞进行一个认真的审计复现.../vendor/yiisoft/yii2/db/BatchQueryResult.php: php namespace yii\db; class BatchQueryResult{ /** ...... */ public function __destruct...这里拿yii\rest\CreateAction::run()举例 /vendor/yiisoft/yii2/rest/CreateAction.php: <?
Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynasty...') ->where(['between','dyn_id', 1,30]) ->limit(10) ->all(); print_r($rows); use yii\db...(*) FROM `user` WHERE `last_name`=:last_name $command = (new \yii\db\Query()) ->select(['id',...result $rows = $command->queryAll(); QUERY RESULTS use yii\db\Query; $query = (new Query()) -...by the "username" column } foreach ($query->each() as $username => $user) { } INDEXING use yii\db
php namespace app\models; use yii\base\Model; use yii\db\ActiveRecord; class reg extends ActiveRecord.../span>//eg:public $name; } 2、控制器:HelloController.php <?...r=hello/hello即可 //其中r代表参数,第一个hello是控制器的名字,第二个是动作的名字 namespace app\controllers; use yii\web\Controller...php use yii\helpers\Html; use yii\widgets\ActiveForm; ?> php $form=ActiveForm::begin();?...php ActiveForm::end();?> reg_success.php php use yii\helpers\Html; ?
php // Controller 中写入代码 $query = User::find(); $pagination = new Pagination(['totalCount' => $query->...count(), 'defaultPageSize' => 2]); $models = $query->offset($pagination->offset)->limit($pagination->...php public function actionTest(){ $connection = Yii::$app->db; $sql = "SELECT * FROM user";...php // Controller中写入代码 $count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM user WHERE status=.../wangking/yii2/211308)) $dataProvider = new SqlDataProvider([ 'sql' => 'SELECT * FROM user WHERE
sql: CREATE TABLE `country` ( `code` CHAR(2) NOT NULL PRIMARY KEY, `name` CHAR(52) NOT NULL, `population...总数:$query->count(); php namespace frontend\controllers; use Yii; use common\models\Country; use yii\data\Pagination; use...php namespace common\models; use yii\db\ActiveRecord; class Country extends ActiveRecord { } 视图:...php use yii\helpers\Html; use yii\widgets\LinkPager; ?> Countries <?
为什么80%的码农都做不了架构师?>>> ? 首先使用引用分页类 1、 1 use yii\data\Pagination; 2、控制器 ?...k.id ORDER BY k.listorder desc, k.id ASC"; 6 $list = Yii::$app->db->createCommand($sql)->queryAll...::$app->db->createCommand($sql." limit "....if(tiaozhuan){ 5 location.href="/index.php?...5、注意:传递的参数一定是要是“page” 因为,yii2中的分页类,传递page的数量是要跳转的页码 参考:yii\data\Pagination 文件 ? 分类: yii2文档整理
给大家看看我这职业玩家般丝滑的操作 可是正当我玩的起劲的时候,我无意间在微信上看到有师傅发了最新的yii2框架反序列化漏洞payload 我立马开始焦虑起来?,这帮家伙真tm不休息吗 ?...漏洞分析 挖掘之前还是要搭建好环境嘛,去github上下载yii2的2.0.37版本或其他更低版本 当然,你也可以选择使用composer安装,不过我用composer安装不了(特别慢)所以我是直接到github...上下载的 自己在github上下载的yii2需要修改config/web.php文件里cookieValidationKey的值,随便什么值都行 然后切换到你刚刚下载的yii框架根目录,执行命令php...,第二个参数为空 现在我们可以调用yii框架中的任何一个无参的方法了,这还不够,我们需要rce 所以,我们要找一个无参数的方法,在这个方法中我们可以实现任意代码执行或者间接实现任意代码执行 到目前为止我还不知道这个利用链到底有多长..._encode(serialize(new yii\db\BatchQueryResult)); } ?
依赖关系的定义可以是一个类名,一个配置数组,或者一个 PHP 回调。...class MyClass extends \yii\base\Component { public function __construct(/*Some lightweight...例如: use yii\base\BaseObject; class Foo extends BaseObject { public $bar;...()); Yii2.0 注册一个别名 $container = new \yii\di\Container; $container->set('foo', 'yii\db\Connection...$container->set('db', function ($container, $params, $config) { return new \yii\db\Connection