
php
文章平均质量分 72
傲雪星枫
活着,虽然令人感到痛苦,然而美好之事,却唯有活着,才能经历。
微信号:fdipzone-idea
展开
-
php __call 与 __callStatic
php 5.3 后新增了 __call 与__callStatic 魔法方法。__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。__call($funcname, $arguments)__callStatic($funcname, $argum原创 2013-02-15 00:42:22 · 44815 阅读 · 0 评论 -
PHP字符串比较
我们在代码中用的最多的逻辑是什么?你知道如下的几段代码的布尔结果分别是什么么?var_dump("1" == "1e0");var_dump("1" == "0x1");var_dump("20" == "2e1");var_dump("10" == " 0x0a");等等;对, 也许你会说在PHP手册的附录中有一部分关于这个问题的总结. 问题是,这只是知其然, 那么所转载 2012-10-25 23:42:48 · 8160 阅读 · 0 评论 -
php中常见的header类型
<?php// 使用 mime_content_type() 查看$mimetypes=array( 'ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'doc' => 'applica转载 2012-02-26 14:31:54 · 1877 阅读 · 0 评论 -
PHP缩小png图片,保留透明色方法
将图片缩成合适的尺寸,jpg图片缩小比较容易,png图片如果带了透明色,按jpg方式来缩小,会造成透明色丢失。保存透明色主要利用gd库的两个方法:imagecolorallocatealpha 分配颜色 + alphaimagesavealpha 设置在保存png图像时保存完整的 alpha 通道信息代码如下://获取源图gd图像标识符$srcImg = imag原创 2013-06-09 22:31:43 · 27340 阅读 · 1 评论 -
文件转base64输出
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。优点:减少http连接数。缺点:这种格式的文件不会被浏览器缓存。不建议将“超过20KB”的文件编码使用,太大的文件反而起反作用。data: URI的基本使用格式如下:data:[][;base64|charset=some_charset],mim原创 2013-06-27 00:37:24 · 34969 阅读 · 0 评论 -
强制更新图片缓存
/** 強制更新圖片緩存* @param Array $files 要更新的圖片* @param int $version 版本*/function force_reload_file($files=array(), $version=0){ $html = ''; if(!isset($_COOKIE['force_reload_page_'.$version])原创 2013-01-09 22:30:56 · 17712 阅读 · 0 评论 -
php5.3 中显示Deprecated: Assigning the return value of new by reference is deprecated in 的解决方法
今天需要将某个网站般去另一台服务器。设置好运行,显示一大堆Deprecated。Deprecated: Assigning the return value of new by reference is deprecated in。新服务器与旧服务器环境是一样的,后来查看php版本,发现旧服务器是 PHP 5.2.4 新的是PHP 5.3.2。之前了解到5.3 与 5.3之前的区别较大原创 2013-07-17 21:41:58 · 25313 阅读 · 0 评论 -
php 根据url自动生成缩略图
原理:设置apache rewrite ,当图片不存在时,调用php 创建图片。例如原图路径为:http://localhost/upload/2013/07/21/1.jpg缩略图路径为:http://localhost/supload/2013/07/21/1.jpg当访问 http://localhost/supload/2013/07/21/1.jpg 时,如图片存在,原创 2013-07-21 14:24:37 · 24294 阅读 · 0 评论 -
使用<img>标签加载php文件,记录页面访问讯息
原理:通过标标签加载php文件,php文件会使用gd库生成一张1x1px的空白透明图片返回,并记录传递的参数写入log文件。sitestat.php<?php// 获取参数$param = array();$param['url'] = isset($_GET['url']) : $_GET['url'] : '';$param['userid'] = isset($_GE原创 2013-08-08 22:35:31 · 19868 阅读 · 2 评论 -
利用图片Etag判断用户
原理:不使用Javascript,SESSION,COOKIES,FLASH。 利用图片Etag识别用户 1.根据用户的REMOTE_ADDR与HTTP_USER_AGENT生成唯一Etag。 2.将Etag输出到客户端 3.获取HTTP_IF_NONE_MATCH 判断是否同一个用户访问。原创 2013-08-21 23:30:55 · 19411 阅读 · 0 评论 -
php output_buffering 缓存使用
buffer是一个内存地址空间,linux系统默认大小一般为4096(4kb)。主要用于存储速度不同步的设备或优先级不同的设备之间传递数据的区域。通过buffer可以使进程之间的相互等待变少。例如,当你打开一个文本编辑器,输入一个字符时,系统并不会立即写入磁盘。而是存储在buffer中,当写满一个buffer时,才会把buffer的内容写入磁盘。当然也可以使用flush强制将buffe原创 2013-08-27 01:36:23 · 23444 阅读 · 2 评论 -
同一域名对应不同IP,访问指定主机文件内容的方法
PHP获取远程主机文件内容方法很多,例如:file_get_contents,fopen 等。<?phpecho file_get_contents('http://demo.fdipzone.com/test.php');?>但如果同一域名对应了不同IP,例如 demo.fdipzone.com 对应3个IP192.168.100.101, 192.168.100.102, 192.原创 2013-09-08 13:03:12 · 20145 阅读 · 0 评论 -
php 实现BigPipe分块输出
原理:利用 ob_flush() 与 flush() 将缓冲区的内容提前输出,浏览器可提早加载这部分的内容,无需等待所有输出完成再加载。将页面内容划分为一个个小块,输出一个后再输出下一个,使用户可尽早看到页面内容,优化用户体验。首先 head 的内容应该优先加载,尽早加载css,javascript等静态内容,因此在head之后应该用 flush()输出。例子:先输出head原创 2013-09-15 12:33:34 · 18234 阅读 · 1 评论 -
HTTP 204 与 205 应用
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。例子:ajax提交用户名,记录用户原创 2013-10-05 23:51:36 · 26481 阅读 · 0 评论 -
php 利用fsockopen GET/POST 提交表单及上传文件
php 利用 fsockopen GET/POST 提交表单及上传文件1.GETget.php<?php$host = 'demo.fdipzone.com';$port = 80;$errno = '';$errstr = '';$timeout = 30;$url = '/socket/getapi.php';$param = array( 'name'原创 2013-09-15 18:55:32 · 26891 阅读 · 4 评论 -
apache mod_xsendfile 让php提供更快的文件下载
服务期提供一个文件下载,一般使用一个url指向服务器中的文件即可提供下载。但这样就没法进行统计,权限检测等操作。原创 2013-10-22 00:56:44 · 15954 阅读 · 0 评论 -
PHP扩展开发报错解决[error: ‘PHP_FE_END’ undeclared here (not in a function)] .
PHP扩展开发报错解决[error: ‘PHP_FE_END’ undeclared here (not in a function)] .解决方法:进到php包的目录:sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/*.csed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/**/原创 2013-11-22 00:22:53 · 23222 阅读 · 1 评论 -
php 如何获取一个变量的名字
PHP中,所有的变量都存储在"符号表"的HastTable结构中,符号的作用域是与活动符号表相关联的。因此,同一时间,只有一个活动符号表。我们要获取到当前活动符号表可以通过 get_defined_vars 方法来获取。get_defined_vars // 返回所有已定义的变量所组成的数组原创 2013-11-09 13:50:28 · 27625 阅读 · 1 评论 -
php 对象克隆 clone
php 对象复制,是复制对象的引用地址,因此使用 $objA = $objB 这种写法时,$objA与$objB会指向相同的内存地址。当$objA 发生变化时,$objB也会受到影响。如果我们要$objA对象复制为$objB对象,复制之后,$objA有什么变化,都不会影响$objB。即$objA与$objB是两个独立的对象,但$objB的初始值是由$objA创建的,比较高效的做法是使用cl原创 2013-11-24 18:29:04 · 13934 阅读 · 0 评论 -
MessagePack 序列化格式
MessagePack 是一种有效的二进制序列化格式。与JSON一样可以在多语言中转换数据,但对比JSON,速度更快,转换后数据更小。安装1.下载msgpack,下载地址:点击下载2.编译安装/usr/bin/phpize (phpize的路径)./configuremake && make install3.在php.ini 中加入 extension = "msgpac原创 2013-12-04 02:01:43 · 17288 阅读 · 0 评论 -
php 异步调用方法
php 异步调用方法客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果。有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回给客户端。但因为php是同步执行的,所以客户端需要等待服务处理完才可以进行下一步。因此对于耗时的操作适合异步执行,服务器接收到请求后,处理完客户端需要的数据就返回,再异步在服务器执行耗时的操作。原创 2014-01-01 17:39:12 · 32490 阅读 · 0 评论 -
MemcacheQ 安装与使用
MemcacheQ 是一个基于 MemcacheDB 的消息队列服务器。官网地址:http://memcachedb.org/memcacheq/特点:1.简单易用。2.处理速度快。3.可创建多条队列。4.并发性能高。5.与memcache协议兼容。MemcacheQ 依赖 Berkeley DB 和 libevent(1.4 或更高)。Berkeley D原创 2014-01-07 00:43:57 · 25805 阅读 · 1 评论 -
php 字符串压缩方法比较
php 提供的字符串压缩方法有 1.gzcompress — Compress a stringThis function compress the given string using the ZLIB data format. 2.gzencode — Create a gzip compressed stringThis function returns a原创 2014-01-16 21:01:30 · 27090 阅读 · 0 评论 -
php 使用异或(XOR)加密/解密文件
php 使用异或(XOR)加密/解密文件原理:将文件每一个字节与key作位异或运算(XOR),解密则再执行一次异或运算。代码如下:<?php$source = 'test.jpg';$encrypt_file = 'test_enc.jpg';$decrypt_file = 'test_dec.jpg';$key = 'D89475D32EA8BBE933DBD2原创 2013-11-02 01:17:22 · 28037 阅读 · 2 评论 -
php 构造函数支持不同个数参数的方法
php 构造函数支持不同个数参数方法原理:在__construct中使用 func_num_args 获取参数个数,再根据参数个数执行不同的调用。参数值使用func_get_arg() 方法获得。demo:<?phpclass demo{ private $_args; public function __construct(){ $args_原创 2014-03-15 01:17:55 · 23142 阅读 · 0 评论 -
使用C创建php扩展
使用C创建php扩展优点:1.提高运行效率。2.降低php复杂度,可以直接调用扩展方法实现功能。3.方便与第三方库交互。缺点:1.开发比php复杂。2.可维护性降低。3.开发周期变长。php开发,发现问题后,只要修复问题,即可见到效果。如果使用扩展,修复后需要重新编译,重启服务,才能见到效果。首先,假定需要实现一个方法:将url字符串转换成超链接原创 2014-03-16 16:07:34 · 27708 阅读 · 0 评论 -
使用PDO查询mysql避免SQL注入
使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严紧,就有SQL注入风险。虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷。而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险。PDO(PHP Data Object) 是PHP5新加入的一个重大功能,因为在原创 2014-03-27 23:20:07 · 29206 阅读 · 0 评论 -
PHP接收二进制流并生成文件
/** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input * $GLOBALS['HTTP_RAW_POST_DATA'] 和 php://input 都不能用于 enctype=multipart/form-data * @param String $fi原创 2012-05-01 22:55:03 · 32580 阅读 · 0 评论 -
php 生成短网址
php 生成短网址原理:1.将原网址做crc32校验,得到校验码。2.使用sprintf('%u') 将校验码转为无符号数字。3.对无符号数字进行求余62操作(大小写字母+数字等于62位),得到余数后映射到62个字符中,将映射后的字符保存。(例如余数是10,则映射的字符是A,0-9对应0-9,10-35对应A-Z,35-62对应a-z)4.循环操作,直到数值为0。5.将所有原创 2014-01-23 02:34:53 · 18651 阅读 · 0 评论 -
php soap 使用实例
SOAP 是基于XML和HTTP通讯协议,XML各个平台,各种语言都支持的一种语言。WSDL 是网络服务描述语言(Web Services Description Language),是一种使用XML格式的文档。这种文档可描述某个Web Service。可规定服务的位置,及服务提供的操作。不同语言之间需要通信(例如:php,java,c),可以通过SOAP,WSDL使不同操作系统,不同技术原创 2014-03-22 17:16:01 · 68030 阅读 · 0 评论 -
php 求水仙花数优化
水仙花数是指一个n位数(n>=3),它每个位上数字的n次幂之和等于它本身,n为它的位数。(例如:1^3+5^3+3^3 = 153)原创 2014-06-29 11:15:58 · 23349 阅读 · 4 评论 -
php 验证身份证号码
身份证号码的结构身份证号码是特征组合码,由17位数字本体码和一位校验码组成。排列顺序从左至右依此为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。原创 2014-06-29 23:21:19 · 33386 阅读 · 0 评论 -
php heredoc 与 nowdoc
php heredoc 与 nowdocheredoc 结构heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串本身,最后要用前面定义的标识符作为结束标志。nowdoc 结构nowdoc 句法结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入php代码或其它大段文本而无需对其中的特殊字符进行转义。nowdoc 与 heredoc 结构一样的标记 <<<,但跟在后面的标识符必须用单引号括起来,即<<<'EOF'。 he原创 2014-05-03 23:21:00 · 21692 阅读 · 0 评论 -
php session 读写锁
当执行session_start()后,session会被锁住。直到页面执行完成。因此在页面执行其间,对sesssion进行写操作,只会保存在内存中,并不会写入session文件。而对session进行读取,则需要等待,直到session锁解开才能读取到。原创 2014-06-14 23:40:00 · 8640 阅读 · 4 评论 -
php unserialize 返回false的解决方法
php 提供serialize(序列化) 与 unserialize(反序列化)方法。使用serialize序列化后,再使用unserialize反序列化就可以获取原来的数据。原创 2014-07-23 21:48:36 · 31481 阅读 · 0 评论 -
php 删除空目录及空子目录
php 删除空目录及空子目录步骤:1.遍历目录及子目录2.使用 scandir 判断目录是否为空,为空则使用rmdir 删除。原创 2014-07-04 23:42:14 · 18514 阅读 · 0 评论 -
facebook comments plugins 介绍
facebook comments plugins 介绍首先,需要在facebook创建一个APP,创建方法见https://developers.facebook.com/,APP有一项是填写Domain的,这里填写你website的Domain。(APP是绑定domain的,不能乱填)原创 2014-08-21 18:16:27 · 41519 阅读 · 8 评论 -
php 根据字符串生成对应数组方法
php 根据字符串生成对应数组方法例如:<?php$config = array( 'project|page|index' => 'content', 'project|page|nav' => array( array( 'image' => '1.jpg', 'name' => 'home' ), array(原创 2014-08-15 20:34:50 · 16579 阅读 · 3 评论 -
使用FormData对象提交表单及上传图片
FormData 对象,可以把form中所有表单元素的name与value组成一个queryString,提交到后台。在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。原创 2014-08-29 00:25:24 · 163743 阅读 · 17 评论 -
Rsync 安装与使用
Rsync 是一个远程数据同步工具,可以通过 LAN/WAN 快速同步多台主机间的文件。Rsync 使用 "Rsync演算法" 来使本地和远程两个主机之间的文件同步。这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。原创 2014-08-30 22:41:22 · 30724 阅读 · 0 评论