php查缺补漏
dongxie548
IT民工一枚
展开
-
php函数strip_tags标签未闭合的情况
在前一阵在的面试过程中面试官曾经问我,如果字符串中的标签未闭合,strip_tags会如何处理?在php的官方文档中对strip_tags的表述如下;strip_tags — 从字符串中去除 HTML 和 PHP 标记注意文档下方的warning:由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。这原创 2015-07-25 21:08:18 · 1826 阅读 · 0 评论 -
php中Password Hashing加密方法详解
说到php的加密方式,很多人第一个想到的应该是MD5和sha1这种形式的加密方式。其实php中的加密方式不仅仅只有这一种,之前在博客中提到的php的RSA加密解密算法php的RSA加密解密算法,就是一种比较常见的加密方式。这篇文章要讲的是php5.5版本新加的一种加密方式Password Hashing。 这种加密方式主要用到了4个php函数:password_hash、password_veri原创 2015-10-24 11:18:15 · 4660 阅读 · 1 评论 -
php删除数组中指定值的元素的几种方法
测试数组如下://这是一个测试数组$testArr = array( 't' => 'qq', 'q' => 'qq', 'b' => 'baidu', 'a' => 'ali', 'm' => 'xiaomi');方法一://foreach遍历后unset删除,这种方法也是最容易想到的方法function delByValue($arr, $value){ if(!is原创 2015-09-21 14:31:13 · 52138 阅读 · 0 评论 -
redis实战之使用redis存储session数据
在之前的一篇服务器由单机转换为负载均衡时需要做哪些处理博文中提到,在多台服务器的情况下,建议使用redis存储session数据,具体如何实现呢?其实实现起来非常简单,以php为例:只需要在php.ini文件中修改相关session配置,如下所示:session.save_handler = redissession.save_path = "tcp://127.0.0.1:原创 2015-09-21 13:39:07 · 8818 阅读 · 1 评论 -
php使用curl的post方法字符串和数组传值的区别
最近在工作中需要请求第三方的一个java版的接口,起初是使用数组进行传参,代码写完之后发现接口死活调试不通,总是提示传参为空,纠结了很久之后,决定尝试使用字符串传参的方式来请求接口,没想到这次居然调试成功了,这让我有了研究这两者究竟有何区别的兴趣。本地的测试代码如下: curl.php<?phpfunction curl_post($url, $data){ $ch = curl_in原创 2015-10-08 23:49:55 · 12623 阅读 · 0 评论 -
php中opcache的使用详解
简述关于opcode缓存的概念可以参考鸟哥的文章:http://www.laruence.com/2008/06/18/221.html 目前为php提供opcode缓存的扩展有很多,比如:Zend Opcache,xcache,eAccelerator,apc等等。为什么选择opcache呢?官方出品,这就保证了会持久更新,而其他一些扩展如apc已经很久都没有更新过了; 适配php5.2原创 2015-10-27 00:27:26 · 19648 阅读 · 0 评论 -
浅谈jsopn跨域请求原理及cors(跨域资源共享)解决方案
由于同源策略的缘故,ajax不能向不同域的网站发出请求。比如a站localhost需要向b站请求数据,地址为:http://www.walk-sing.com/api.php请求的代码如下: $.get("http://www.walk-sing.com/api.php", function(data){ alert("Data Loaded: " + data);原创 2015-07-18 22:40:06 · 2563 阅读 · 0 评论 -
HTTP_REFERER的用法及伪造
引言在php中,可以使用$_SERVER[‘HTTP_REFERER’]来获取HTTP_REFERER信息,关于HTTP_REFERER,php文档中的描述如下: “引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。 ”在百度百科中,对于该参数的描原创 2015-11-13 00:15:57 · 103214 阅读 · 1 评论 -
调试php代码的利器firephp
firephp简述如果你曾经写过js代码的话,那么你对如下的代码肯定不会陌生:console.log('something');通过这行代码,就可以在chome和firefox的开发工具(F12)的console栏中看到你想要的调试信息。 那么,php能不能也通过这种形式进行代码调试呢? 答案是肯定的,可以通过firephp工具来实现在浏览器的console栏中进行调试。firephp的安装安装原创 2015-11-14 15:43:49 · 1291 阅读 · 0 评论 -
php中cookie跨域的解决方案以及IE和safari浏览器中的坑
最近工作上遇到了一道难题:公司的合作商想将我们平台的用户引流到他们平台,即在他们的网站上用户可以使用在我们平台的用户名和密码进行登录,简言之需要做到用户在两个平台登录状态的同步。一般来说用户登录完之后用户信息存储在cookie中,要实现登录状态的同步实际上就是要实现cookie的跨域共享。具体的实现思路是,a网站不存储cookie,b网站提供cookie的获取接口,a网站实时请求该原创 2015-10-13 23:23:04 · 4672 阅读 · 0 评论 -
php的RSA加密解密算法
最近因为工作的需要,要倒腾支付宝支付相关的知识,因为支付宝应用了RSA加密机制,个人对此并不了解,所以在这里写下一篇总结。1、生成公钥和私钥要应用RSA算法,必须先生成公钥和私钥,公钥和私钥的生成可以借助openssl工具。 本次测验是在windows下进行的,可以到以下的地址下载windows安装包:http://gnuwin32.sourceforge.net/packages/原创 2015-10-07 12:54:56 · 4946 阅读 · 0 评论 -
使用phpdocumentor2生成项目文档
phpdocumentor2简述在开发一个大型的项目中,项目文件往往会越来越多,这时如果我们寻找一个类文件,想知道他的功能时,可能需要到一个很深的目录结构中去寻找,而且我们很多时候并不是想研究这个类文件的代码,而是想看看这个文件的作用和类文件中包含了哪些方法,这时我们会想如果有一份这样的文档在手边就好了,phpdocumentor就是帮我们生成这样的文档的工具。phpdocumentor2的安装有很原创 2015-11-15 16:42:50 · 1880 阅读 · 0 评论 -
重读php文档
不知不觉中已经在这个行业工作了两年,有人说技术的学习需要经历三个过程:把书读薄->把书读厚->把书读薄。工作了这么久之后才发现其实自己居然根本就没有把php文档认真的通读一遍,感觉自己基础一点都不牢靠,而在工作中大多使用框架进行开发,都是在使用框架封装好提供给你的方法做开发,久而久之,你甚至都忘了一些php原本的东西。这也就是笔者选择重看一遍php文档的原因。以下是在重看php文档时当时未重视或未清原创 2015-11-01 17:04:48 · 550 阅读 · 0 评论 -
关于php的register_globals和magic_quotes_gpc参数配置
在与php相关的争议中,过去争议最大的莫过于register_globals的设置。当 register_globals 打开以后,各种变量都被注入代码,例如来自 HTML 表单的请求变量。这就容易引发一些安全层面的问题,比如下面的一个例子:<?phpif(authenticated_user()){ $authorized = true;}if($authorized){ req原创 2015-11-01 16:57:27 · 797 阅读 · 0 评论 -
php中curl的参数详解
在php中最常用来发起http请求的莫过于curl,但是发现自己在工作中如果有需要用到curl的时候,都是直接从网上抄一段代码拿来用,而且curl的参数实在是太多,看上去让人感觉眼花缭乱,自己好像从来没有认真的去研究过每一个参数的用途,故在这篇博文中稍作整理,并配上相关的案例。CURLOPT_RETURNTRANSFER关于CURLOPT_RETURNTRANSFER,php文档中的概念是:原创 2015-11-24 23:12:01 · 3204 阅读 · 0 评论 -
codeigniter是如何实现钩子机制的?
记得上一次去到喜啦面试,面试官问我一个问题:codeigniter是如何实现钩子机制的? 当时答不上来,后来回来之后查了一些资料才明白,所以在这里记录一下: codeigniter的钩子是这样实现的:首先在框架的核心文件system/core/CodeIniter.php文件的 122行,载入Hooks类,接着在该文件中定义了几个挂载点,比如pre_system(129行)、post_contr原创 2015-11-29 22:50:32 · 852 阅读 · 1 评论 -
php依赖注入
引言依然是来自到喜啦的一道面试题,你知道什么是依赖注入吗? 依赖注入(DI)的概念虽然听起来很深奥,但是如果你用过一些新兴的php框架的话,对于DI一定不陌生,因为它们多多少少都用到了依赖注入来处理类与类之间的依赖关系。php中传递依赖关系的三种方案其实要理解DI,首先要明白在php中如何传递依赖关系。 第一种方案,也是最不可取的方案,就是在A类中直接用new关键词来创建一个B类,如下代码所示:原创 2015-11-29 23:47:20 · 3207 阅读 · 0 评论 -
php中base64加密的应用场景
关于base64加密的用途,在php文档中的描述是:设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。Base64-encoded 数据要比原始数据多占用 33% 左右的空间。(http://php.net/manual/zh/function.base64-encode.php)其实base64加密方法的应用远远不止于此,今天就跟大家扒一扒base64加密的原创 2015-11-07 17:34:15 · 426145 阅读 · 0 评论 -
php垃圾回收机制及内存泄露
php的垃圾回收机制以前一直以为垃圾回收什么的是非常深不可测的知识,后来在做重读php手册的计划时,发现php手册已经对php的回收机制做了较为详细的概述,文档地址:http://php.net/manual/zh/features.gc.php 读完这部分文档之后,个人感觉垃圾回收并不深奥,就只是一个引用计数的概念,当变量的引用数等于0时,就会被销毁。 下面展开讨论一下。请看第一个例子:<原创 2015-11-07 12:36:07 · 5884 阅读 · 1 评论 -
php在cli模式下STDOUT、STDIN、$argv、$argc的用法
php在cli模式下STDOUT和STDIN变量的用法可以用如下代码来解释:<?php//提示用户输入姓名fwrite(STDOUT, "what's your name");//获取用户输入数据$name = trim(fgets(STDIN));//在客户端输出fwrite(STDOUT, "Hello,$name");在命令行下运行结果:在命令行模式下还有原创 2015-07-12 23:41:20 · 3678 阅读 · 0 评论 -
php函数base64_encode后的参数包含加号解析出错的解决方案
在进入主题之前我们先来看这样如下代码,test.php<?php$url = "test2.php?name=".base64_encode('用来做测试的字符串')."&age=23";header("Location:$url");test2.php<?phpvar_dump(base64_decode($_GET['name']));die();访问http://原创 2015-07-26 17:14:05 · 7136 阅读 · 0 评论 -
使用渐进式JPG改善用户体验
问题如此:当一张JPG压缩到无法压缩的程度,但是它的大小还有有点大,你会怎么做? 当时听到这个问题觉得一头雾水,根本不知道如何回答,后来面试官问我有没有听过一种叫做渐进式的JPG格式?我很坦白的说没有,后来得知原来这是一种我们WEB中常见的JPG编码类型之一,使用这种格式的JPG我们发现图片在网页加载时会经历从模糊到清晰这个过程。可能这样表述不清晰,下文会以图片对比。转载 2015-07-25 21:32:44 · 1506 阅读 · 0 评论 -
[转]深入分析几种PHP获取客户端IP的情况
在这篇文章中,我们将会为大家详细介绍PHP获取客户端IP的几种情况分析。我们在使用PHP获取的IP可能是客户端真实的IP,也可能是代理服务器的IP,也有可能根本取不到任何IP值。在PHP获取客户端IP中常使用 $_SERVER["REMOTE_ADDR"] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。转载 2015-07-13 16:13:55 · 1284 阅读 · 0 评论 -
$id + 0x80000000是什么意思?
前几天在看旧员工的代码的,发现在生成试玩账号有如下一段代码:$swNum = $id + 0x80000000;初看这段代码甚是让人费解,一头雾水。通过搜索知道0x80000000是16进制数,换算成10进制是2147483648,估计是php在处理两个不同进制的算术时会进行进制转换吧,所以上面的代码等价于$id + 2147483648原创 2015-07-29 22:55:24 · 2471 阅读 · 0 评论 -
file_get_contents: failed to open stream: No such file or directory
今天调试代码的时候,报了如题的报错信息,但是将请求地址打印出来,输入到浏览器访问的时候,却可以得到正确结果,百思不得其解,后来才发现url参数多了一个空格,就因为这个原因,php就无法访问了,坑爹啊!原创 2015-08-26 11:27:32 · 17068 阅读 · 0 评论 -
[转]WEB跨域问题及解决方案
跨域(Cross-domain)JavaScript同源策略Web页面的跨域问题产生原因是企图使用JS脚本读写不同域的JS作用域。问题根源来自JavaScript的同源策略:出于安全考虑,Javascript限制来自不同源的web页面JS脚本之间进行交互,(特别说明一下:「同源」是指web页面的域,一个JS文件本身的地址不重要,在哪个页面被引用,那个页面的域就是JS的域),假设有一转载 2015-07-19 09:08:11 · 706 阅读 · 0 评论 -
[转]网站重复请求解决方案
1. 访问网站所涉及环节简单说就是重复相同的请求首先看看访问流程所设计的每个环节 User -> Browse -> CDN/Proxy Cache -> Web Server -> App Server / fastcgi pool -> Cache -> Database 大部分网站都是这样的结构:用户,浏览器,CDN或反向代理,Web服务器,应用服务器,缓存转载 2015-07-19 11:25:24 · 2184 阅读 · 0 评论 -
php中php://input、$_POST和$HTTP_RAW_POST_DATA的异同
在之前的工作中经常会遇见php://input这种写法,一直不知道这是s原创 2015-08-01 19:06:46 · 3411 阅读 · 0 评论 -
Java对PHP服务器hmac_sha1签名认证方法的匹配实现
如果你的API服务安全认证协议中要求使用hmac_sha1方法对信息进行编码, 而你的服务是由PHP实现的,客户端是由JAVA实现的,那么为了对签名正确比对,就需要在两者之间建立能匹配的编码方式.PHP侧如下:[php] view plaincopydefine('ID','123456'); defin转载 2015-07-21 10:37:31 · 719 阅读 · 0 评论 -
php如何获取http头信息
php的get_headers可以取得服务器响应一个 HTTP 请求所发送的所有标头。实际案例:<?php$url = 'http://www.walk-sing.com';var_dump(get_headers($url));输出结果:array (size=19) 0 => string 'HTTP/1.1 302 Moved Temporarily' (leng原创 2015-07-24 18:48:07 · 2974 阅读 · 0 评论 -
xdebug在linux下的安装教程
本文主要讲述如何在linux下安装php的xdebug扩展。1、首先下载xdebug:wget http://www.xdebug.org/files/xdebug-2.3.3.tgz2、解压缩: tar zxvf xdebug-2.3.3.tgz3、进入解压的目录: cd xdebug-2.3.34、建立外挂模块:phpize原创 2015-09-27 09:17:07 · 10698 阅读 · 1 评论 -
php在fatal error下出现500
php在fatal error下的500code原创 2015-09-27 09:21:57 · 965 阅读 · 0 评论 -
yaml文件的语法及注意事项
因为工作需要,最近在倒腾symfony,而symfony框架里面配置文件超级多,用的都是yaml文件作为配置文件,由于自己对该文件不是很熟悉,故找了资料了解了下,此为学习笔记。首先举个例子,请将如下php数组转换为yaml格式:$bat = array( 'website' =>array( 'baidu' => 'http://www.baidu.com', '原创 2015-09-29 22:41:13 · 35782 阅读 · 1 评论 -
服务器由单机转换为负载均衡时需要做哪些处理?
1、文件上传2、session3、ip的获取原创 2015-09-14 22:13:37 · 1515 阅读 · 0 评论 -
php安装memcache和memcached扩展
php中有两个扩展用于操作memcached,文档地址如下:http://php.net/manual/zh/book.memcache.php http://php.net/manual/zh/book.memcached.php 目前普遍推荐使用memcached方式操作memcached。先来安装memcache,按如下步骤执行即可:wget https://pecl.php.net/ge原创 2015-12-06 23:24:19 · 2610 阅读 · 0 评论