本分类下共有14篇文章

PHP技术

php7 新发现之三元运算 ??与?:的区别

三元运算是我个人比较喜欢写的一种方式,书写简单,可读性强。PHP7增加了三元运算新的写法,让我们的语法更简洁。先看一下我以前是这样写的:<?php//正常写法if(isset($_GET[user])){$user=$_GET[user];}else{$user=Guest;}//使用三元运算简写成$user=isset($_GET[user])?$_GET[user]:Guest;PHP7到来了,我们可以这样写了:<?php//php7的写法$user=$_GET[user]??Guest;//等同于$user=isset($_GET[user])?$_GET[user]:Guest;使用两个问号(??)替代isset。表示如果$_GET[user]非空,则$user=$_GET[user],如果$_GET[user]为空,则$user=‘Guest’;&l...

自PHP5.4起可以使用短数组定义语法,用[]替代array()

我以前写的配置文件是酱婶儿的:$_MCONFIG=array(\dbhost\=>\127.0.0.1\,//MyCMS数据库服务器(一般为本地localhost)\dbuser\=>\mycms\,//MyCMS数据库用户名\dbpw\=>\N2W2l632uepv6q0o\,//MyCMS数据库密码\dbname\=>\mycms\,//MyCMS数据库名\port\=>3306,//数据库连接端口\tablepre\=>\mycms_\,//MyCMS表名前缀);现在我升级到了最新的PHP7.3X,我写的配置文件可以更好看一点:$_MCONFIG=[\dbhost\=>\127.0.0.1\,//MyCMS数据库服务器(一般为本地localhost)\dbuser\=>\mycms\,//MyCMS数据库用户名\dbpw\=>\N2W2l632uepv...

PHP利用openssl_encrypt实现数据的加解密

$data=http://www.neter8.com;//加密明文$method=DES-ECB;//加密方法$passwd=110;//加密密钥$options=0;//数据格式选项(可选)$result=openssl_encrypt($data,$method,$passwd,$options);var_dump($result);//string(32)XTEAhRrXSUUaXpFtQ/6xpFkML5cObhCXvar_dump(openssl_decrypt($result,$method,$passwd,0));//string(21)http://www.neter8.com这是快速简单的加密和解密方法。常常用于数据交换防止被窃听。接收端只要密码正确就能还原内容。下面是PHP5.6+的AES认证加密例子,同样的内容每次输出字符都会变化(更安全)。$key=123456;//加密密码$...

__DIR__与dirname(__FILE__)的效率哪个更高?

在很多项目里会发现更多的使用dirname(__FILE__)而不是__DIR__,虽然它们返回的结果是一样的。var_dump(dirname(__FILE__));var_dump(__DIR__);但是,至少有两个区别:__DIR__仅在PHP>=5.3时存在这就是为什么dirname(__FILE__)使用更广泛的原因,更早时候大家只能使用这个,后来的项目为了兼容一些低版本的PHP做出的让步。__DIR__直接使用编译好的内置路径,而dirname(__FILE__)意味着使用函数调用对FILE进行处理,所以,__DIR__是(或者应当是)更快。...

使用Zend Opcache黑名单功能 排除不需要加速的PHP文件

很多时候我们的文件不需要进行ZendOpcache的PHP加速,比如生成的缓存、实时更新的配置文件,计划任务等,在启动了加速后可能会产生异常情况。ZendOpcache给我们提供了一个黑名单功能,可以排除不需要加速的文件或者目录。假设已安装了ZendOpcache并配置成功使用,首先找到PHP.ini的配置文件,搜索opcache.blacklist_filename=去掉前面的分号;如果没有找到,可以手工这个增加参数;OPcache黑名单文件是一个文本文件,其中包含不应加速的文件的名称,每行一个。允许使用通配符,也可以提供前缀。以分号开头的行将被忽略为注释。例如,创建一个新文件:/etc/php7/opcach...

Mysql 5.7以上版本怎么样使用JSON存储数据与查询

由于某些需求,需要在MYSQL里存储json格式的数据。这里建立一个测试表:CREATETABLE`meishi`.`recipes_major`(`id`INT(10)NOTNULLAUTO_INCREMENT,`json`JSONNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDB;然后插入测试数据:INSERTINTO`recipes_major`(`id`,`json`)VALUES(NULL,\[{\\\name\\\:\\\牛肉\\\,\\\value\\\:\\\250g\\\},{\\\name\\\:\\\土豆\\\,\\\value\\\:\\\300g\\\},{\\\name\\\:\\\咖喱\\\,\\\value\\\:\\\80g\\\}]\);我们就得到了一个使用json存储的表。我们使用命令:SELECT`json`FROM`recipes_major`WHERE`id`=1可以得到以下数据:[{\n...

近期对程序的升级操作,程序升级到了2.1

除了对最新版本的PHP和MYSQL兼容升级以外,程序版本已达到了2.1,从开始写死了模块,现在变成可以对模块的手动增加与删除,对扩展模块的支持意味着程序可以进行各种的扩展操作,比如增加电子商务、美食、音乐、电影等,只需要安装增加的模块就可以了。1、系统核心进行升级,增加了自定义缓存、优化了程序结构、修复了各种BUG。2、系统后台支持了手机版本的兼容,可以通过手机管理网站操作。3、数据库编码由原来的utf-8改成了utf8mb4_unicode_ci,支持手机上的表情发布。4、数据库引擎由原来的MyISAM改为InnoDB,PHP对数据库连接删除了mysql,改为了最新的MySQLi...

PHP引用变量详解

<?php$a=1;$b=&$a;//引用变量$aecho$a;//1echo$b;//1$a=2;//这里只改了$a的值echo$a;//2echo$b;//2可以看到$b也同时改变了值。其实这里很好理解引用变量,就是给变量多加一个名字,它们指向了同一个内存存储位置。当变量a的内容变化,b也会一起变,就像土豆和马铃薯一样(还有西红柿炒番茄)。<?php$a=1;$b=&$a;unset($a);这里并不会删除变量$b,只是对变量$a进行了删除操作。下面是一个函数的传址调用例子:functiontest(&$a){$a=$a+100;}$b=1;echo$b;//输出1test($b);//这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数...

PHP中的可变变量详解

<?php$one=\one\;$$one=\two\;$$$one=\three\;$$$$one=\four\;$$$$one=\five\;//这样写真的不是语法错误,按php命名原则,\$\后面就是一个新的变量。echo$one.\<br/>\;//oneecho$$one.\<br/>\;//twoecho$$$one.\<br/>\;//threeecho$$$$one.\<br/>\;//fourecho$$$$$one.\<br/>\;//five//下面的变量我们并没有去声明,但依然会输入值echo$one.\<br/>\;//oneecho$two.\<br/>\;//twoecho$three.\<br/>\;//threeecho$four.\<br/>\;//fourecho$five.\<br/>\;//five上面就是可变变量的...

使用PHP每2行数据进行一次格式化的高效可读代码

使用PHP每2行数据进行一次格式化的高效可读代码

<?php$i=0;foreach($childrenas$child){++$i;if($i==1){echo\<row>\;echo\<item>$child</item>\;}if($i==2){echo\<item>$child</item>\;echo\</row>\$i=0;}}通过编辑代码可以实现以下数据格式:<s>s1s2</s><d>3d4d</d><s>s5s6</s><d>7d8d</d><s>s9s10</s><d>11d12d</d>........在前端会很经常用到这样的数据,而且可以让显示更丰富。以下是应用案例:

一个可以防止图片木马的PHP上传类

<?php//成功后返回一个数组,如果有错误请使用UploadHandler->showError()调用返回值classUploadHandler{private$formName;//表单名private$fileName;//最终返回文件名private$maxSize;//上传文件大小限制private$allowMime;//允许的MIME类型private$allowExt;//允许的扩展名private$uploadPath;//上传目录private$fileInfo=array();//上传文件数组private$ext;//文件扩展名private$img;//存放图片相关信息private$destination;//最终地址private$imgArr=array(\jpg\,\jpeg\,\png\,\gif\);//遇到图片进行检测private$imgFlag=0;privat...

PHP 7.2生产环境版发布了,性能越来越快了。

PHP 7.2生产环境版发布了,性能越来越快了。

刚刚php.net发布了最新可用于生产环境的php7.2,许多改进和新功能,如:转换对象/数组转换中的数字键、计数不可计数的对象、对象类型提示、HashContext作为对象、密码哈希中的Argon2、将TLS常量改进为理智的值、Mcrypt扩展删除等,作为PHP10年来最大的版本升级,最大的性能升级,PHP7在多放的测试中都表现出很明显的性能提升。ZendOpcache。Optimizer+是Zend开发的闭源但可以免费使用的PHP优化加速组件,是第一个也是最快的opcode缓存工具。现在,Zend科技公司将Optimizer+在PHPLicense下开源成为ZendOpcache。ZendOPcache通过opcode缓存和优化提供更快...

导致php出现空白行的解决办法

导致php出现空白行的解决办法

使用PHP写了一个页测试出来顶部始终有一行空白,查看源代码里面什么都没有,使用F12调试工具在顶部看到&#65279;这样一行编码,经过查询很多资料发现原来是DW保存、转码的问题,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF0xBB0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被...

PHP中实用的常量和系统全局变量

PHP库提供了非常多有用的常量供我们使用,平时开发中,我最经常使用的常识有以下几个,这里做一下使用介绍:1、DIRECTORY_SEPARATOR这个常识在win下返回“\”、linux下返回“/”。2、PATH_SEPARATOR在win下返回“:”在linux返回“;”一般配合set_include_path使用,如果你建过环境就知道,这是函数的功能是设置一个系统环境变量。当需要引用多个文章或者路径的时候win需要使用;隔开、linux使用:隔开。3、__FILE__返回当前程序文件的路径,配合dirname使用可以得到当前程序的目录。如:主函数文件放到了web/functio...