预览模式: 普通 | 列表

yii2 rbac权限管理

Yii2是一个好的web开发框架, 其中也提供了对RBAC权限管理的支持。RBAC就是Role-Based Access Control(基于角色的访问控制)的简写,具体请看百度百科,http://baike.baidu.com/view/73432.htm

核心思想就是我把一系列的许可组合在一起,成为一个角色。第一个用户可以扮演多个角色,只要这多个角色中的其中一个角色可以做的事,此用户就可以做。

在Yii2中,RBAC模型如下图所示。

yii2 权限管理模型

查看更多...

Tags: yii rbac 权限

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5912

php error_reporting参数的二进制表

 

常量 二进制
1 E_ERROR 0000000000001
2 E_WARNING 0000000000010
4 E_PARSE 0000000000100
8 E_NOTICE 0000000001000
16 E_CORE_ERROR 0000000010000
32 E_CORE_WARNING 0000000100000
64 E_COMPILE_ERROR 0000001000000
128 E_COMPILE_WARNING 0000010000000
256 E_USER_ERROR 0000100000000
512 E_USER_WARNING 0001000000000
1024 E_USER_NOTICE 0010000000000
2048 E_STRICT 0100000000000
4096 E_RECOVERABLE_ERROR 1000000000000
8191 E_ALL 1111111111111

Tags: php

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4332

常用开源协议的比较

 我们在WEB应用开发的过程中经常需要用到一些开源的库或软件,在享受开源带来的好处的同时,我们也要注意尊重原作者的劳动成果。在这过程中我们就需要了解一些常用的开源协议。常用的开源协议有GPL,LGPL,BSD,AL2.0,MIT等。我们来比较一下这些开源协议的区别。

1. GPL协议

第一点,这个协议说,我是开源的,免费的。第二点,这个协议跟我们说,不管你是用了我的代码还是用了我的二进制库,你就是跟我一样的了,也发尊守GPL协议。也就是说,如果你用了GPL协议开源的库或软件,你的软件也必需要开源,免费,不能作商业用途。

2. LGPL协议

查看更多...

Tags: 开源

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 5794

PHP对数组进行排序

在用PHP进行WEB应用开发中我们经常需要对数组进行排序,强大的PHP也内置了很多方便我们排序的函数。让我们来看一下。

对值数组进行排序sort/rsort

这两个函数基本上是一样的,只是一个是正序,一个是反序。下面其它的也是成对的,就不再说明了。

这组函数只对数组的值进行排序,所有的KEY都会被丢弃掉。所以这组函数适合对值数组进行排序。

关于sort_flags这个参数,这里说明一下。下面如果出现sort_flag也是一样的用法。

  • SORT_REGULAR - 正常比较单元(不改变类型)
  • SORT_NUMERIC - 单元被作为数字来比较
  • SORT_STRING - 单元被作为字符串来比较
  • SORT_LOCALE_STRING - 根据当前的 locale 设置来把单元当作字符串比较。PHP 4.4.0 和 5.0.2 新加

 

查看更多...

Tags: php 排序

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4237

【福利】阿里云服务器购买优惠码

新得一枚阿里云的优惠码,可以在原有的价格的基础上打9折

1、推荐码使用规则?
适用订单:首次购买包年包月云服务器ECS和云数据库RDS的订单
优惠折扣:享受原价9折优惠。
有效期: 推荐码限量限时,请尽快使用。
(其中分销商关联账号、已打折订单、企业子账户不在使用范围。)

2、如何使用?
选好产品->立即购买->确认订单环节->点击「我有推荐码」->输入推荐码->立享9折!

优惠码使用方法

优惠码:ERIF3P

分类:智慧人生 | 固定链接 | 评论: 0 | 查看次数: 4027

php中==与===的使用不慎导致安全问题

  php是一门动态类型的语言,他的变量的类型不需要我们显式的指出,他会自动选择合适的类型。所以在php中有两种相等比较符,==与===。 在使用==进行比较时,将会进行类型转换后的比较。当使用===将会先比较变量的类型,如果类型不一致,会直接被判定为不相等。

 
由此使用"=="会引入一些安全问题。

查看更多...

Tags: php 安全

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4579

win7不用助手 手动升级到win10

 

 昨天用360的助手把公司的电脑升级到win10了,体验还可以。就想把家里的电脑也升级到win10,但是因为家里的电脑是未激活的win8.1,所以又折腾了一下,把win8.1降到了win7,激活,准备再用360来升级的。

但是今天360告诉我,由于系统繁忙我的升级被到8.5号了。无奈呀。只能琢磨自己升级了。另外吐槽一下腾讯,说好的升级助手呢?

ed2k://|file|cn_windows_10_multiple_editions_x64_dvd_6848463.iso|4303300608|94FD861E82458005A9CA8E617379856A|/

我是用了这么个镜像,下载回来。用daemon tools虚拟到光驱,直接点里面的setup.exe就可以开始升级了。

另外还有一些版本,提供给大家。

查看更多...

Tags: win7 win10

分类:win7技术 | 固定链接 | 评论: 0 | 查看次数: 5786

php包自动加载工具Composer

 java有Maven,Gradle, node.js有npm, python也有如easy_install等的包管理工具,现在PHP也有了一个自动的包管理工具Composer(https://getcomposer.org/)。在这之前,如果你需要为PHP添加一个包,你需要去网上下载,放到合适的位置,如果这个包又依赖了其它包,又要去找,非常麻烦。现在,因为有了composer,一切都好了。

你只需要写一个简单的文件,composer.json, composer就会自动帮你从网上下载合适的包,并且帮你把依赖搞定。

{
    "require": {
        "foo/bar": "1.0.0"
    }
}

Composer的安装

curl -sS https://getcomposer.org/installer | php 
php -r "readfile("https://getcomposer.org/installer');" | php

执行这两条中的任何一条语句,就可以安装composer了。

查看更多...

Tags: php composer

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5061

Packagist / Composer 中国全量镜像

 备注一下,一个网站

http://pkg.phpcomposer.com/

在composer.json中添加如下配置

{
    "repositories": [
        {"type": "composer", "url": "http://packagist.phpcomposer.com"},
        {"packagist": false}
    ]
}

 

Tags: composer

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 5806

 一、MySQL 获得当前日期时间 函数

1.1 获得当前日期+时间(date + time)函数:now()
mysql> select now();
 
+---------------------+
| now() |
+---------------------+
| 2008-08-08 22:20:46 |
+---------------------+
 
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:
current_timestamp()
,current_timestamp
,localtime()
,localtime
,localtimestamp -- (v4.0.6)
,localtimestamp() -- (v4.0.6)
 
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

查看更多...

Tags: mysql 数据库

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 10460

php中new static和new self的区别

在读Yii2的代码的时候看到的他用了个new static,之前没有用过,所以写了一点代码试了下。差异应该在于new self是实例化当前代码所在类。new static是调用的的那个类,就下面这个例子来说,MyTest继承了Test类, 那么当在MyTest中使用static的时候,这个static代表的就是MyTest,self代表的就是Test。

<?php

class Test {
    private $_user;
    protected function __construct($user) {
        $this->_user = $user;
    }   

    public function showUser(){
        echo "{$this->_user}\n";
    }   

    public static function of($user) {
        return new static($user);
    }   
}

class MyTest extends Test{
    protected function __construct($user) {
        parent::__construct("from MyTest: '.$user);
    }   
}

class Test2 {
    private $_user;
    protected function __construct($user) {
        $this->_user = $user;
    }   

    public function showUser(){
        echo "{$this->_user}\n";
    }   

    public static function of($user) {
        return new self($user);
    }   
}

class MyTest2 extends Test2{
    protected function __construct($user) {
        parent::__construct('from MyTest: '.$user);
    }   
}


MyTest::of("hello world")->showUser();
MyTest2::of("hello world")->showUser();

 

Tags: php

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 11640

swoole:谁说PHP不支持异步操作?

 之前一直不知道有这么一个PHP的扩展的存在,今天逛了逛github才偶然发现。就是他: swoole

这是一个号称要重新定义PHP的扩展。纯C语言实现,高性能,支持百万并发。提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。

更值得一提的是,他还支持websocket。

这个扩展提供了一个只能运行在cli环境下的Server类,和一个可以运行在任何环境下的Client类。Server和Client可以很方便的进行异步通信。这样一些异步任务可以很方便的放到Server上执行。

查看更多...

Tags: php 异步

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 12045

Pepper Flash Player是一个由google推出的,更稳定,更安全的flash player, 所以在ubuntu14.04以后,google就不支持Netscape Plugin API了。所以我们只要安装Pepper Flash Player就可以了。

如何安装Pepper Flash Player

Ctrl+Alt+T打开终端,执行以下命令即可。

sudo apt-get install pepperflashplugin-nonfree
sudo update-pepperflashplugin-nonfree --install

Tags: ubuntu

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 12413

PHP获取POST的原始内容

 我们使用PHP的时候,经常会用$_POST这个全局变量来获取用户POST过来的数据。但这其实隐含了一个事情,就是用户提交过来的HTTP请求的头部有有一个字段为Content-Type:application/x-www-form-urlencoded或multipart/form-data

 如果用户提交过来的数据是JSON格式的呢?

这个时候PHP就没有办法再帮我们做这件事情了,此时$_POST将会是一个空的数组,我们需要自己来处理用户提交的数据。其实非常简单, 代码如下:

<?php
$postStr = file_get_contents("php://input");

 $postStr这个变量中已然保存了用户放到POST中的数据。

查看更多...

Tags: php

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 14414

    Web应用程序开发是一个很宽泛的话题。本文仅讨论Web应用开发者应当避免的安全错误。这些错误涉及到任何开发者都不应当忽视的基本安全原则。

Web应用开发人员最易犯的九个安全错误

查看更多...

Tags: web开发 安全

分类:网络安全 | 固定链接 | 评论: 0 | 查看次数: 24668

 抢了一下午票,老出现下面的提示,说我在使用第三方插件。

刚刷出来的票又没了。

看了一段12306抢票的前端代码,写出这么段代码来无视这个提示,直接进入选择乘客和输入验证码的页面。

var Ori_ajax = $.ajax;

$.ajax = function(o, n){
	if (o.url == "/otn/leftTicket/submitOrderRequest") {
		var hisSuccess = o.success;
		o.success = function(p){
			otsRedirect("post", ctx + "confirmPassenger/initDc", {});
			return;
		}
	}
	return ori_ajax.apply(this, [].slice.call(arguments, 0));
};
//@ sourceURL=fakeajax.js

查看更多...

分类:智慧人生 | 固定链接 | 评论: 0 | 查看次数: 31412

解决'ascii' codec can't encode character

写Python的时候,经常会出现一个 错误,就是'ascii' codec can't encode character。这是因为Python是基于ascii处理字符的,如果你当前处理的字符串当中存在非ascii字符,就会报这个错误。

解决这个问题的方法很简单。在python的脚本文件的头部加入如下代码即可。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Tags: python 编码

分类:python | 固定链接 | 评论: 0 | 查看次数: 30471

ubuntu service的添加和删除

Redhat 提供了chkconfig这个命令来管理系统在不同运行级别下的服务开启/关闭: chkconfig ServiceName on/off 并可以用chkconfig --list(两个杠) 查看当前的制定状况。

Ubuntu里没有这个命令,其实也可以不用任何命令简单管理系统服务, 可以通过改变 /etc/rc*.d(*的取值是从0到6和S)下的启动脚本名来管理服务. 比如不想让KDM自动启动, 可以这样: sudo find /etc/rc* -name *kdm* -exec rm {} /; 也就是把KDM的启动脚本全删掉.

Ubuntu也提供了另外一个简单的命令来实现管理。但首先服务必须已在/etc/init.d目录中存在。如:

添加一个服务: sudo update-rc.d ServiceName defaults

查看更多...

Tags: linux ubuntu

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 33021

为小内存linux服务器增加交换分区

 创建并激活swap交换文件

cd /var/

dd if=/dev/zero of=swapfile bs=1024 count=1073741824

mkswap swapfile

查看更多...

Tags: linux

分类:WEB服务器 | 固定链接 | 评论: 0 | 查看次数: 32560

windows定时任务schtasks命令详细解

命令格式
 
SCHTASKS /Create [/S system [/U username [/P [password]]]]
    [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
    [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
    [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]]
    [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F]
 
描述:
     允许管理员在本地或远程系统上创建计划任务。
 

查看更多...

Tags: windows

分类:bat批处理 | 固定链接 | 评论: 0 | 查看次数: 29428
博主QQ: 友情链接请找我
QQ群: 灰色档案
返回顶部 关闭