分类 PHP 下的文章

PHP 5.3、5.4、5.5、5.6 中的新特性


文章转载:http://segmentfault.com/a/1190000002790818

PHP 5.6

1、可以使用表达式定义常量

https://php.net/manual/zh/migration56.new-features.php

在之前的 PHP 版本中,必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

<?php
const ONE = 1;
const TWO = ONE * 2;    //定义常量时允许使用之前定义的常量进行计算

class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of THREE is '.self::THREE;

    public function f($a = ONE + self::THREE) { //允许常量作为函数参数默认值
        return $a;
    }
}

echo (new C)->f()."\n";
echo C::SENTENCE;
?>

可以通过 const 关键字来定义类型为 array 的常量。

<?php
const ARR = ['a', 'b'];
echo ARR[0];
?>


插件发布:LoginLimit_for_Typecho 登录限制,防字典爆破


LoginLimit


起步

var/Widget/User.php中约117行,将这三行注释,因为这边有执行插件就返回插件的返回结果,而插件并没有验证登录逻辑。

微信截图_20151207152313.png

不注释掉自己都会登录失败

使用方法:

第一步:下载本插件,放在 usr/plugins/ 目录中;
第二步:激活插件;
第三步:设置30分钟允许登录失败次数;
第四步:完成。

管理:

管理后台-管理-登录日志:可查看别人尝试登录系统的记录。

特别说明:

这个插件是为满足个人需求而编写,兼容性方面多多少少会有不完善的地方,如有需求,可根据源代码自行修改,或者与我联系。

github开源地址:https://github.com/hongweipeng/LoginLimit_for_Typecho

与我联系:

作者:hongweipeng
主页:blog.west2online.com
或者通过 Emai:hongweichen8888@sina.com 有任何问题也可评论留言


wamp尝鲜php7


起步

php7终于正式发布了,迫不及待想去试下,先拿公司的电脑开刀,环境是wamp,还是32位的,从官网php7.0.0下载windows版本 VC14 x86 Thread Safe,升级wamp的php版本如下:

第一步

wamp的php放在wamp/bin/php,我们在该目录新建php7.0.0文件夹

微信截图_20151207091933.png

把下载的压缩包解压到刚建的php7.0.0文件夹中。 微信截图_20151207092026.png


让json更懂中文


起步

相信很多人用php搭后台时候,当ajax用于交互时候,由于字符都被urf-8处理,所以用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 而且还会在一定程度上增加传输的数据量。

<?php
$str = "让json更懂中文";
echo json_encode($str);
//输出:"\u8ba9json\u66f4\u61c2\u4e2d\u6587"

总结几种解决方法。

方法1:自己构造支持中文的 json_encode

思路是这样的,对字符串进行url加密处理,之后json_encode后再解密

<?php
function json_encode_zn($data) {
    //处理json的中文问题
    if(is_string($data)) {
        $data = urlencode($data);
    }else if(is_array($data)) {
        array_walk_recursive($data, function(&$value) {
            if(is_string($value)) {
                $value = urlencode($value);
            }
        });
    }
    return urldecode(json_encode($data));
}

$str = "让json更懂中文";
$arr = array("id"=>5,"name"=>"中文名字","arr"=>array(1,"weapon","中文"));
echo json_encode_zn($str);//"让json更懂中文"
echo json_encode_zn($arr);//{"id":5,"name":"中文名字","arr":[1,"weapon","中文"]}


用php写wifidog的认证服务器


路由器上wifidog的设置

1376869377-561c8368c251e.png 主要设置鉴权服务器主机名(域名或ip都可以)和加粗鉴权服务器路径

路由器会请求以下四个地址:

http://认证服务器/路径/login http://认证服务器/路径/auth http://认证服务器/路径/ping http://认证服务器/路径/portal http://认证服务器/路径/gw_message.php

所以我们需要每个请求建立一个文件夹下一个index.php