PHP 的 uniqid 函数产生的 id 真的是唯一的么?

最近使用到了 uniqid,就产生了疑问?uniqid 生成的 id 由什么组成?真的是唯一的么?什么情况下会产生冲突? 从文档中看到 uniqid 函数有两个参数。 uniqid 的结构 看源码: PHP_FUNCTION(uniqid) { ... gettimeofday((struct timeval *) tv, (struct timezone *) NULL...

分类至 PHP
1条评论

php 时区对 strtotime 函数的影响

来看两段代码

代码1(时区设为巴黎):...

代码2(时区设为上海):...

已知巴黎时区比上海时区慢7个小时,对比两段代码的执行结果,两个 $time1 格式化后显示没有问题,$time2 格式化后显示也是差7个小时。然而,同样是 +30 day,两个 $time2 的时间戳却不同,相差了3600秒,也就是1小时。

分类至 PHP
0条评论

mb_substr 编码问题

PHP 中 mb_* 系列函数用于处理多字节字符串,平时比较常用就是字符串截取 mb_substr,可以有效规避中文字符串截取的乱码问题。

mb_substr 的格式为:

mb_substr( string $str, int $start[, int $length = NULL[, string $encoding = mb_internal_encoding()]] ) : string

第4个参数 encoding 为字符编码。如果省略,则使用内部字符编码。

那么,这个“内部字符编码”是什么呢?我们可以通过函数 mb_internal_encoding 设置和获取...

分类至 PHP
1条评论

php 中 http_build_query 函数对空值的处理

在对接 API 接口的时候,我们常常使用 http_build_query 函数来拼接参数。但是,这个函数会对空值做过滤和转换,不小心的话,很容易踩坑。

下面演示执行:

$args = [
    'key1' => 0,
    'key2' => '',
    'key3' => '0',
    'key4' => [],
    'key5' => null,
    'key6' => false,
    'key7' => true
];
$str = http_build_query($args);
echo $str;

输出结果为...

分类至 PHP
0条评论

php.ini 配置项 max_input_vars

从 PHP 5.3.9 起,php.ini 中增加了一个配置项 max_input_vars,默认值为1000。

手册中 max_input_vars 释义如下:

接受多少 输入的变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量)指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的输入变量,将会导致 E_WARNING 的产生,更多的输入变量将会从请求中截断。 

分类至 PHP
0条评论

Lumen 框架前后台认证(多用户认证)

Lumen 框架默认只有一种角色认证(单表),但是通常我们会把后台管理员与前台用户设计成两个不同的表,这个时候就得改造一下代码了。

假设后台管理员和前台用户对应 Model 分别为 App\Models\AdminApp\Models\User,作如下修改...

分类至 PHP
0条评论

重新编译 PHP 中文手册

目前,从 PHP 官网 https://www.php.net/download-docs.php 下载的 chm 中文手册在 Windows 系统上有两个大问题:

  1. 索引不完整,中文标题的页面没有索引
  2. 搜索栏用不了,无论搜什么都搜不出来

鉴于此,本人参考了网上制作 chm 的文档,自己重新编译一个版本。

在 Windows 系统下,chm 文件是通过微软的 HTML Help Workshop 生成的。chm 文件可以用 7-zip 进行打开,解压出来后可得到原 html 文件、hhc 目录文件、hhk 索引文件。

本人用 7-zip 解压从 PHP 官网下载的 php_enhanced_zh.chm ,得到所有的 html,以及 php_manual_zh.hhcphp_manual_zh.hhk,打开这两个文件没有看到任何中文字符,猜测可能是解压的时候丢失了,或者原本官网打包就有问题。如果要重新制作 chm 手册,我们还缺少一个 hhp 后缀名的项目配置文件 。

下面是本人写的一个 PHP 脚本,用于重新生成 php_manual_zh.hhcphp_manual_zh.hhkphp_manual_zh.hhp

分类至 PHP
0条评论

PHP 的 array_column 函数

语法

array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array

array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。

分类至 PHP
0条评论