随笔分类 - php
php
摘要:php7.3升级后CI框架session失效session不能读取的问题
框架ci3.0.2,php服务器从5升级到7.x后发现session失效了
ci无法设置session的问题
根本原因在,libraries/Session/Session.php 中 133行:
将上面的/^[0-9a-f]{40}$/, 改成 /^[0-9a-z]{10,40}$/
阅读全文
摘要:正则表达式,匹配非本站图片网址去掉img标签内容实例
在线正则表达式测试 http://tool.oschina.net/regex/#
正则表达式:<[img|IMG].*?src=[\'|\"]((?!https\:\/\/img\.zdz).*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>
重点:(?!https\:\/\/img\.zdz).* 这个表示不是本站网址的图片,如果要匹配本站的用(https\:\/\/img\.zdz).* 即去掉?!
阅读全文
摘要:不要在 MySQL 中使用“utf8”,请使用“utf8mb4”
问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。
“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。
MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。
当然,他们并没有对新的字符集广而告之(可能是因为这个bug让他们觉得很尴尬),以致于现在网络上仍然在建议开发者使用“utf8”,但这些建议都是错误的。
在这个不合法的字符集发布了之后,MySQL就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。最终,MySQL在2010年重新发布了“utf8mb4”来支持真正的UTF-8。
阅读全文
摘要:Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程
通配符证书一般还是比较贵的一般最便宜的通配符证书5、60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基本没差别。
LNMP 1.5已经添加了对通配符证书的支持,生成通配符证书和Let'sEncrypt平常SSL证书命令有些差异(通配符证书命令是 lnmp dnsssl 域名dns服务商简称,普通证书是lnmp ssl add),最好是使用域名DNS服务商的API,这样才能实现自动续期。
阅读全文
摘要:ThinkAdmin for PHP后台管理系统
ThinkAdmin 是一个基于 Thinkphp 5.1.x 开发的后台管理系统,集成后台系统常用功能。
基于 ThinkPHP 5.1 基础开发平台(后台开发) http://demo.thinkadmin.top
ThinkAdmin · ThinkAdmin V3.0 开发手册 · 看云
https://www.kancloud.cn/zoujingli/thinkadmin/323614
阅读全文
摘要:小米手机跨域问题,返回resphone:undefined,status 0
我小米note2的手机登录不上,返回resphone:undefined,status 0
我手机登录不了的问题解决了,后台接口跨域设置缺少head参数(注:关键是这个head参数)
allowMethods: ['GET', 'PUT', 'POST', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
阅读全文
摘要:PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法
1.电脑需要先安装redis服务端环境,并在安装目录下打开客户端redis-cli.exe测试可以使用
2.安装redis的php扩展,必须要对应上版本号和类型。需要注意的有三个地方:
php的版本号,ts/nts类型,x64/x86类型(需要通过phpinfo页面查找Architecture属性来确认,window64位系统安装的xampp也可能是x86的)
阅读全文
摘要:PHP 7.3: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? · Issue #4037 · aces/Loris
https://github.com/aces/Loris/issues/4037
这个错误是7.3的bug,新版本的已经修复了
3.38.0 · braintree/braintree_php@0affc87
https://github.com/braintree/braintree_php/commit/0affc87b538b048514901c9865765235e5cdd9b6
阅读全文
摘要:php小数加减精度问题,比特币计算精度问题
在php开发时,有小数加减的场景。结果发现不能够等于预想的值,bccomp比较二个高精确度数字。
不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
BCMath 任意精度数学
阅读全文
摘要:php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小
UNIX时间戳转换为日期用函数: date() ,date('Y-m-d H:i:s', 1500219870);
日期转换为UNIX时间戳用函数:strtotime() ,strtotime('2018-10-23 02:17:16');
阅读全文
摘要:php冒泡排序实现方法,传入几个数字排序后 输出实战例子
算法和数据结构是一个编程工作人员的内功。
四种入门级排序算法: 冒泡排序、选择排序、插入排序、快速排序。
一、冒泡排序
原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (以下都是升序排列,即从小到大排列)
阅读全文
摘要:根据IP获取所在的国家城市
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=119.139.196.127
搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson
搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8
太平洋电脑 IP库接口:(默认callback=IPCallBack) http://whois.pconline.com.cn/ipJson.jsp
淘宝网接口:http://ip.taobao.com/service/getIpInfo.php?ip=119.139.196.127
返回:
{"code":0,"data":{"ip":"119.139.196.127","country":"中国","area":"",
阅读全文
摘要:php的Allowed memory size of 134217728 bytes exhausted问题解决办法
报错: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in xxxx/mysqli_result.php on line 183
解决方案1:通过ini_set函数修改配置选项值,ini_set(‘memory_limit’,’256M’); //升级为256M内存
解决方案2:1、修改php.ini
修改php配置
vi /usr/local/php/etc/php.ini
memory_limit = 128 改成memory_limit = 256
php-fpm重启
/etc/init.d/php-fpm restart
重启Nginx
service nginx restart
阅读全文
摘要:摘要:目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API是否应该加入版本信息?
阅读全文
摘要:php CI框架中URL特殊字符处理与SQL注入隐患
php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分类,字符都无法正常显示很头痛,而在配置里增加单引号' 反斜杠\ 这种特殊字符又很容易给sql注入
在默认的config配置基础上加上:+=()特殊字符
#$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['permitted_uri_chars'] ='a-z 0-9~%.:_\-\+=()';
阅读全文
摘要:PHP框架CI CodeIgniter 的log_message开启日志记录方法
第一步:index.php文件,修改环境为开发环境
define(‘ENVIRONMENT’, ‘development’);
第二步:application/config/config.php文件修改
$config[‘log_threshold’] = 4; //0表示关闭,4表示所有级别都打开
第三步:在需要输出日志的地方加入如下类似语句
log_message(‘error’, ‘Some variable did not contain a value.’);
第四步:在application/logs目录就可以看到日志文件
阅读全文
摘要:先说下遇到问题:1.php没有内置unicode_ecode函数可以直接使用
2.网上很多资料都是用$str = iconv($encoding, 'UCS-2', $str);
window下转换出来的是正常的,但在Linux下转换出来的两个字符是相反的,用在线unicode转换工具出来的结果是乱码。
UCS-2的编码规则:
windows下默认是UCS-2LE。
linux下默认是UCS-2BE。用iconv(指定UCS-2)来转换生成的是UCS-2BE的unicode,但可能php环境配置会导致不是UCS-2BE。
windows和linux等多个平台对 UCS-2 的理解不同(UCS-2LE,UCS-2BE),所以为了统一需要直接指定为UCS-2BE。
阅读全文
摘要:php 网站301重定向设置代码实战案例
301重定向就是页面永久性移走的意思,搜索引擎知道这个页面是301重定向的话,就会把旧的地址替换成重定向之后的地址。
302重定向就是页面暂时性转移,搜索引擎处理302的话,不会将旧的地址替换成新的地址,保留旧地址,一个302的例子就是短链接服务,短链接会请求数据库找出长链接,然后使用302重定向到长链接去,这样的好处就是搜索引擎和一些浏览器不会保留短链接,而是使用长链接。
实战代码(把Location后面的url替换成你想跳转的url即可)
测试代码是否生效成功301跳转可以用google站长工具检测,在“google抓取工具” 里面输入跳转前的URL 后就可以看到,如果如下图显示已重定向就说明成功了。
阅读全文
摘要:php ci nginx 伪静态rewrite配置方法
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
保存、退出重启nginx
阅读全文
摘要:php Allocator Jemalloc TCMalloc那个内存分配器比较好?
php一键安装脚本可以选择是否安装内存优化
1: Don't install Memory Allocator. (Default)
2: Install Jemalloc
3: Install TCMalloc
ptmalloc 是glibc的内存分配管理
tcmalloc 是google的内存分配管理模块
jemalloc 是BSD的提供的内存分配管理
阅读全文