<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>大智若鲁&#039;s Blog &#187; PHP</title>
	<atom:link href="http://www.lzpnb.com/web/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lzpnb.com</link>
	<description>----我留在网上的一点痕迹.</description>
	<lastBuildDate>Tue, 27 Dec 2011 12:38:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>腾讯PHP程序员面试题</title>
		<link>http://www.lzpnb.com/archives/873</link>
		<comments>http://www.lzpnb.com/archives/873#comments</comments>
		<pubDate>Sat, 05 Jun 2010 03:34:36 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lzpnb.com/archives/873</guid>
		<description><![CDATA[在csdn上看到的腾讯PHP程序员面试题，转到这里让更多人汗颜一下 说在前面： １、以下题目，除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源，请节约使用。编程任务在有相应的环境时，会要求上机书写，实在没有条件，就只能写在草纸上了。 ２、时间： 基础任务＋进阶任务＋设计任务 ＝ 90分钟 编程任务 ＝ 60分钟 基础任务： １、请列举你能想到的UNIX信号，并说明信号用途。 ２、请列举、你能想到的所有的字符串查找算法，并加注释简单说明。 ３、有一个IP地址（192.168.0.1），请写出其 32位无符号整数形式。 ４、写出、你能想到的所有HTTP返回状态值，并说明用途（比如：返回404表示找不到页面） 基础任务-选作（会得到额外分数）： １、画几个你最熟悉的SERVER端模型出来（格式不重要，尽量将图画清楚，说明思路即可） 进阶任务： １、PHP的垃圾收集机制是怎样的？ 　　说明： 　　１）如果，你熟悉PHP源码，那么请从源码入手，回答些问题，会获得额外加分 　　２）如果，你不熟悉PHP源码，那么尽你所能，多写点东西，包括利用自己的编程直觉得到的信息，都可以。 　　３）对，则有分，错误不扣，不写无分。 ２、请写出HTTP头，并符合以下要求： 　　１）这是一个post请求 　　２）目标：http://www.example.com:8080/test 　　３）POST变量： 　　　　username: test 　　　　pwd: test2 　　　　intro: Hello world! 　　４）包含以下COOKIE信息： 　　　　 cur_query: you&#38;me 　　说明： 　　１）如果，你记不得某个HTTP协议中的指令字了，那么，无奈这举是用”汉字”代替。 　　２）如果，你能记住更多的HTTP协议指令字，那么多写几句，总是没坏处，对吧？ 　　３）最关键的，只需要画出正确的”轮廓”（还记得httpwatch等工具打印出来的头部吗？那就是”轮廓”的含义），也会有分数，但如果，连”轮廓”都写错了，那么就很遗憾了。 设计任务： １、最近总有人骚扰我们的投票模块，需要你来设计一个投票限制的东东 　　要求如下： 　　１）要求每个 QQ号码（假设此QQ号码在UNIT32内可以表示）10分钟这内只能投5票。 　　２）我们的用户很踊跃，平均每天要有2000万人左右通过此程序投票。 　　说明： 　　１）无需写代码，只需要图跟文字即可。 　　２）对于关键逻辑，请用图加代码表示出来，这也是对你文字表达能力的一个考验。 　　３）对你能想到的所有的边界条件列出来，这是对你逻辑思维全面与敏捷性的考验。 　　４）存储部分，尽你所能吧。如果，你需要一个自己设计的存储层，那么把这个存储层的实现，用文字＋图片方式描述清楚，要是设计合理，你会获得华丽的奖分。 编程任务： [...]]]></description>
			<content:encoded><![CDATA[<p><strong>在csdn上看到的腾讯PHP程序员面试题，转到这里让更多人汗颜一下<img src="http://www.lzpnb.com/wp-content/uploads/2010/06/zrclip_001p64f453f9.png" style="DISPLAY: inline; FLOAT: right" height="135" width="137"/></strong></p>
<p><strong>说在前面： <br/></strong>１、以下题目，除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源，请节约使用。编程任务在有相应的环境时，会要求上机书写，实在没有条件，就只能写在草纸上了。 <br/>２、时间： <br/>基础任务＋进阶任务＋设计任务 ＝ 90分钟 <br/>编程任务 ＝ 60分钟 <br/><br/><strong>基础任务：</strong> <br/>１、请列举你能想到的UNIX信号，并说明信号用途。 <br/>２、请列举、你能想到的所有的字符串查找算法，并加注释简单说明。 <br/>３、有一个IP地址（192.168.0.1），请写出其 32位无符号整数形式。 <br/>４、写出、你能想到的所有HTTP返回状态值，并说明用途（比如：返回404表示找不到页面） <br/><br/><strong>基础任务-选作（会得到额外分数）：</strong> <br/>１、画几个你最熟悉的SERVER端模型出来（格式不重要，尽量将图画清楚，说明思路即可） <br/><br/><strong>进阶任务：</strong> <br/>１、PHP的垃圾收集机制是怎样的？ <br/>　　说明： <br/>　　１）如果，你熟悉PHP源码，那么请从源码入手，回答些问题，会获得额外加分 <br/>　　２）如果，你不熟悉PHP源码，那么尽你所能，多写点东西，包括利用自己的编程直觉得到的信息，都可以。 <br/>　　３）对，则有分，错误不扣，不写无分。 <br/>２、请写出HTTP头，并符合以下要求： <br/>　　１）这是一个post请求 <br/>　　２）目标：http://www.example.com:8080/test <br/>　　３）POST变量： <br/>　　　　username: test <br/>　　　　pwd: test2 <br/>　　　　intro: Hello world! <br/>　　４）包含以下COOKIE信息： <br/>　　　　 cur_query: you&amp;me <br/>　　说明： <br/>　　１）如果，你记不得某个HTTP协议中的指令字了，那么，无奈这举是用”汉字”代替。 <br/>　　２）如果，你能记住更多的HTTP协议指令字，那么多写几句，总是没坏处，对吧？ <br/>　　３）最关键的，只需要画出正确的”轮廓”（还记得httpwatch等工具打印出来的头部吗？那就是”轮廓”的含义），也会有分数，但如果，连”轮廓”都写错了，那么就很遗憾了。 <br/><br/><strong>设计任务：</strong> <br/>１、最近总有人骚扰我们的投票模块，需要你来设计一个投票限制的东东 <br/>　　要求如下： <br/>　　１）要求每个 QQ号码（假设此QQ号码在UNIT32内可以表示）10分钟这内只能投5票。 <br/>　　２）我们的用户很踊跃，平均每天要有2000万人左右通过此程序投票。 <br/>　　说明： <br/>　　１）无需写代码，只需要图跟文字即可。 <br/>　　２）对于关键逻辑，请用图加代码表示出来，这也是对你文字表达能力的一个考验。 <br/>　　３）对你能想到的所有的边界条件列出来，这是对你逻辑思维全面与敏捷性的考验。 <br/>　　４）存储部分，尽你所能吧。如果，你需要一个自己设计的存储层，那么把这个存储层的实现，用文字＋图片方式描述清楚，要是设计合理，你会获得华丽的奖分。 <br/><br/><strong>编程任务：</strong> <br/>１、我们碰到了大麻烦，一个新来的传教士惹恼了上帝，上帝很愤怒，要求我们把圣经（bbe.txt）背熟，直至他说哪个单词，我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员，那么髟助我们完成这个不可能的任务吧。 <br/>　　要求如下： <br/>　　１）/myworks/example/bbe.txt，98版本英文圣经一本 <br/>　　２）输入部分要求如下：php ./example.php [单词] <br/>　　３）输出部分如下：[单词] 1,2 2,4 5,6　表示：此单词在1行2列（第二个单词），2行4列&#8230; <br/>　　说明： <br/>　　１）此文本4MB之巨&#8230; <br/>　　２）单词的含义：由英文字母（大小写），数字（0-9）组成的串 <br/>　　３）提供给你的机器OS为 ubuntu 9.10，内存只有1G，而且，很不幸的，其中700M用来做了别的 <br/>　　４）上机考试不允许上网，但我装了man文档以及读取 CHM以及PDF的阅读器，在电脑的桌面的CHM文件夹中，有相应的PHP参考手册 <br/>　　５）算法复杂度要求不能大于O（N^2）（就是N的平方） <br/>　　６）什么？PHP低效且用起来不顺手，好的，你可以用别的语言来实现。但注意：提供给你的机器上只有python 2.4/perl 5.8/gcc[g++] 4.1 <br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/873/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP6展现新特性</title>
		<link>http://www.lzpnb.com/archives/822</link>
		<comments>http://www.lzpnb.com/archives/822#comments</comments>
		<pubDate>Wed, 19 May 2010 17:20:58 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lzpnb.com/archives/822</guid>
		<description><![CDATA[PHP的下一个版本：V6，包含了很的新特性和语法改进，会使它在面向对像方面性更易用。 其他重要的特性：比如在核心函数中对Unicode （统一编码）的支持，这意味着PHP 6提供了更好的更可靠国际支持。 PHP 已经很流行，被无数的站点使用，被大部分因特网接入商所支持，被Yahoo这样的大网络公司使用着。在即将来临的PHP版本中准备增加一些成功的新特性，使PHP在某些场合下更易用更安全。你准备好接受 PHP 6 了吗？如果你明天就升级了，你的程序会运行得很好吗？你该怎么办？这篇文章集合了PHP 6的改变，他们中的一些备份移植到版本的PHP v5.x，您目前的脚本可能需要进行一些调整。 如果你现在使用不是PHP，但是一直在考虑它，考虑一下它的新特性。这些特点，从Unicode的核心支持到XML支持，使它更容易为你写的功能填补PHP的应用。 PHP 6 新特性 PHP 6当前已经作为开发者快照使用，所以你可以下载和试用一下这篇文章列出很多特性，这些特性已经在当前的快照中实现了。见资源。 改进 Unicode 支持 在 PHP的核心函数中，有很多对Unicode 字符串的支持的改进，这些新特性将产生巨大的影响因为它允许PHP为国际字符提供更多的支持。所以如果一个开发者或者架构师使用不同的语言，例如Java 程序语言，是因为它具有超过PHP的国际化支持的话，当支持改进时他会花一点时间来考虑一下PHP。 因为今天你已经可以下载到开发者版本的PHP V6，你将看到一些功能函数已经支持Unicode字符串。有一个函数清单已经被测试和验证了完全可以处理Unicode，参见资源。 命名空间 命名空间是一种避免因函数或者类之间的命名冲突而使你的函数和类以及方法无法读取，而不使用前缀命名惯例的一种方法。因此，通过使用命名空间，你可以命名别人可能已经使用的类名，而不用担心在运行时会出错。表一提供了一个在PHP中使用命名空间的示例。 您不用在源代码中做更新或更改，因为你写的任何PHP代码可以不包含命名空间而运行得很好。因为命名空间特性似乎会移植到PHP 5.3 X中，如果它可以使用，您可以在自己的程序中引用命名空间。 &#60;?php // I'm not sure why I would implement my own XMLWriter, but at least // the name of this one won't collide with [...]]]></description>
			<content:encoded><![CDATA[<p>PHP的下一个版本：V6，包含了很的新特性和语法改进，会使它在面向对像方面性<img src="http://www.lzpnb.com/wp-content/uploads/2010/05/images.jpg" style="DISPLAY: inline; FLOAT: right" height="87" alt="images.jpg" width="134"/>更易用。 <br/>其他重要的特性：比如在核心函数中对Unicode （统一编码）的支持，这意味着PHP 6提供了更好的更可靠国际支持。 <br/><br/>PHP 已经很流行，被无数的站点使用，被大部分因特网接入商所支持，被Yahoo这样的大网络公司使用着。在即将来临的PHP版本中准备增加一些成功的新特性，使PHP在某些场合下更易用更安全。你准备好接受 PHP 6 了吗？如果你明天就升级了，你的程序会运行得很好吗？你该怎么办？这篇文章集合了PHP 6的改变，他们中的一些备份移植到版本的PHP v5.x，您目前的脚本可能需要进行一些调整。 <br/><br/>如果你现在使用不是PHP，但是一直在考虑它，考虑一下它的新特性。这些特点，从Unicode的核心支持到XML支持，使它更容易为你写的功能填补PHP的应用。 <br/><br/><strong>PHP 6 新特性</strong> <br/><br/>PHP 6当前已经作为开发者快照使用，所以你可以下载和试用一下这篇文章列出很多特性，这些特性已经在当前的快照中实现了。见资源。 <br/><br/><strong>改进 Unicode 支持</strong> <br/><br/>在 PHP的核心函数中，有很多对Unicode 字符串的支持的改进，这些新特性将产生巨大的影响因为它允许PHP为国际字符提供更多的支持。所以如果一个开发者或者架构师使用不同的语言，例如Java 程序语言，是因为它具有超过PHP的国际化支持的话，当支持改进时他会花一点时间来考虑一下PHP。 <br/><br/>因为今天你已经可以下载到开发者版本的PHP V6，你将看到一些功能函数已经支持Unicode字符串。有一个函数清单已经被测试和验证了完全可以处理Unicode，参见资源。 <br/><br/><strong>命名空间</strong> <br/><br/>命名空间是一种避免因函数或者类之间的命名冲突而使你的函数和类以及方法无法读取，而不使用前缀命名惯例的一种方法。因此，通过使用命名空间，你可以命名别人可能已经使用的类名，而不用担心在运行时会出错。表一提供了一个在PHP中使用命名空间的示例。 <br/><br/>您不用在源代码中做更新或更改，因为你写的任何PHP代码可以不包含命名空间而运行得很好。因为命名空间特性似乎会移植到PHP 5.3 X中，如果它可以使用，您可以在自己的程序中引用命名空间。 <br/><br/></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #666666; font-style: italic;">// I'm not sure why I would implement my own XMLWriter, but at least</span>
<span style="color: #666666; font-style: italic;">// the name of this one won't collide with the one built in to PHP</span>
<span style="color: #000000; font-weight: bold;">namespace</span> NathanAGood<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">class</span> XMLWriter 
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Implementation here...</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$writer</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> NathanAGood<span style="color: #339933;">::</span><span style="color: #004000;">XMLWriter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><br/><br/><strong>Web 2.0 特性</strong> <br/><br/>依赖于你怎么使用PHP和你现在脚本的是什么样子的，现在的语言和语法差异，可能会或者不会最大程度的影响下面一些特性，这是指那些直接让你引用的Web 2.0功能到你的PHP应用程序。 <br/><br/><strong>SOAP</strong> <br/><br/>SOAP 是一种网络服务「说话」的协议，并且支持不少其他语言，例如Java和微软的.NET,虽然有其他的方法来驱动和使用网络服务，比如表象化状态转变（Representational State Transfer ）REST， SOAP仍然在使不同平台具有可操作性中是最常用的。此外，SOAP在PHP扩展和PEAR库中使用，SOAP在PHP中默认是不支持的，因此你启用这个扩展或者叫你的ISP启用。此外，PEAR包允许你建立SOAP客户端和服务器，如SOAP包。 <br/><br/>如果你改变了默认设置，SOAP将会在PHP 6中启用。这个扩展将提供你很容易的的实现SOAP客户端和SOAP服务，允许你编写的应用提供使用或者网络服务。 <br/><br/>如果SOAP扩展是默认设置，那就意味着你不能在PHP中设置它们，如果您开发的PHP应用程序并且它们发布到一个ISP服务器上，您可能需要检查一下你的ISP，以验证SOAP并启用为他们升级。 <br/><br/><strong>XML</strong> <br/><br/>在PHP 5.1中XMLReader 和XMLWriter已经变成PHP核心的一部分，这使你工作起来更轻松如果在你的PHP程序中需要使用到XML的话。和SOAP扩展一样，如果你使用SOAP或者XML这是个好消息因为PHP 6比已经出炉的PHP4 更适合你。 <br/><br/><strong>被删除的东西</strong> <br/><br/>除了具有的一些新功能，PHP 6引擎将删除一些在前面版本中已经有的功能。大部分这些功能，如register_globals 和safe_mode 在目前的PHP中被视为「破的」。因为他们可能会暴露一些安全风险。 PHP在努力的清除中，在下一个版本中这些将从PHP中删除或者废弃。反对者认为大部分ISP或者企业会保留现在的脚本因为升级到PHP6会破坏现在的的脚本，但是支持者认为很高兴看到PHP团队修补了这些漏洞，并且提供了一个干净，安全的运行工具。 <br/><br/><strong>将从PHP删除的功能有：</strong> <br/><br/>magic_quotes register_globals register_long_arrays safe_mode <br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/822/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网站提速全攻略</title>
		<link>http://www.lzpnb.com/archives/736</link>
		<comments>http://www.lzpnb.com/archives/736#comments</comments>
		<pubDate>Tue, 27 Apr 2010 13:04:13 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WEB开发]]></category>

		<guid isPermaLink="false">http://www.lzpnb.com/?p=736</guid>
		<description><![CDATA[网站页面的加载速度是用户体验中相当重要的一部分，yahoo推出了Yslow这个工具，它可以对你的网站速度的各项指标进行评级。通过这个工具，我们可以找到影响网页加载速度的原因，并针对性的进行优化。 根据Yslow的评分标准，我们可以在以下方面对网站进行重点的优化。 1.尽量减少HTTP请求的数量。 网页中不可避免的要引入一些文件，比如Js，CSS，背景图片等等，由于Http协议的无状态性，用户的每一次访问，都会重新向服务器请求所有文件，而大量Http请求的累加，正是影响网站速度的最主要原因。 所以我们尽可能的要将这些文件合并，网站只用一个JS文件，一个CSS文件，一个背景图片，是最完美的解决方案。 2.使用CDN网络 这种方法效果很好，但涉及到一定的投入，对于小网站来说，实现起来有些困难。所以这里略过。如果你不知道什么是CDN，请google. 3.Add an Expires header Add an Expires header，通俗点说，就是让客户端第一次浏览你的网站时，把一些常用但改动不频繁的网页元素缓存起来，比如CSS，JS，各种图片等。我们可以在服务器端设定一个很长的时间，比如一个月，那么用户在一个月内再次访问你的网站时，就会直接调用本地的缓存内容，无需再重新请求服务器。 这里以apache服务器为例，如果服务器安装了expires模块（一般的虚拟主机商都有支持expires），就可以在.htaccess中添加下面的内容： ExpiresActive On ExpiresDefault A600 ExpiresByType image/x-icon A2592000 ExpiresByType application/x-javascript A2592000 ExpiresByType application/javascript A2592000 ExpiresByType text/javascript A2592000 ExpiresByType text/css A604800 ExpiresByType image/gif A2592000 ExpiresByType image/png A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType text/plain A86400 ExpiresByType application/x-shockwave-flash A2592000 ExpiresByType video/x-flv A2592000 ExpiresByType application/pdf [...]]]></description>
			<content:encoded><![CDATA[<p>网站页面的加载速度是用户体验中相当重要的一部分，yahoo推出了Yslow这个工具，它可以对你的网站速度的各项指标进行评级。通过这个工具，我们可以找到影响网页加载速度的原因，并针对性的进行优化。</p>
<p>根据Yslow的评分标准，我们可以在以下方面对网站进行重点的优化。</p>
<h3>1.尽量减少HTTP请求的数量。</h3>
<p>网页中不可避免的要引入一些文件，比如Js，CSS，背景图片等等，由于Http协议的无状态性，用户的每一次访问，都会重新向服务器请求所有文件，而大量Http请求的累加，正是影响网站速度的最主要原因。<br />
所以我们尽可能的要将这些文件合并，网站只用一个JS文件，一个CSS文件，一个背景图片，是最完美的解决方案。</p>
<h3>2.使用CDN网络</h3>
<p>这种方法效果很好，但涉及到一定的投入，对于小网站来说，实现起来有些困难。所以这里略过。如果你不知道什么是CDN，请google.</p>
<h3>3.Add an Expires header</h3>
<p>Add an Expires header，通俗点说，就是让客户端第一次浏览你的网站时，把一些常用但改动不频繁的网页元素缓存起来，比如CSS，JS，各种图片等。我们可以在服务器端设定一个很长的时间，比如一个月，那么用户在一个月内再次访问你的网站时，就会直接调用本地的缓存内容，无需再重新请求服务器。<br />
这里以apache服务器为例，如果服务器安装了expires模块（一般的虚拟主机商都有支持expires），就可以在.htaccess中添加下面的内容：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/javascript A2592000
ExpiresByType text/javascript A2592000
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600</pre></div></div>

<p>上面字母A后面的数字是秒，也就是缓存的时间。</p>
<p>3.给网站启用Gzip压缩</p>
<p>Gzip可以将用户请求的网页元素进行压缩传输，压缩比很高，大智若鲁的html压缩比达到了百分之七十。我们可以对html，css，js，php，xml等文件进行gzip压缩，但不要试图压缩图片文件，据说越压越大的。<br />
<strong>如何启用gzip压缩呢</strong>？主要有两种方法：<br />
最好的情况是你的主机采用的是 Apache 2，并安装启用了mod_deflate 模块，虚拟主机需要询问主机商。如果主机支持就很简单了，只需要在 .htaccess 文件中加入以下代码可以压缩 HTML, PHP, JS, CSS, XML 后缀的文件。</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript</pre></div></div>

<p>如果主机不支持，就得用下面很麻烦的方法了：<br />
已为css文件启用gzip为例：<br />
把css文件后缀改为php，在你要压缩的css头部添加以下代码：</p>
<p>在尾部添加：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&amp;lt; ?php if(extension_loaded('zlib')) {ob_end_flush();} ?&amp;gt;</pre></div></div>

<p>然后把页面中的css路径改为此php文件就可以了。<br />
如果压缩js，方法同上，只是要把头部的代码换成：</p>
<p>这种方法很麻烦，需要对每个文件逐一的更改，如果你是懒人，也可以试试下面的方法：<br />
在网站根目录创建文件：gzip.php,写入如下代码：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #0000ff;">'text/css'</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'js'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'text/javascript'</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'html'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'text/html'</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'htm'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'text/html'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'url'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'url'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$extension</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$extension</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_pop</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$extension</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$allowed</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$extension</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'..'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$pos</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">is_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #339933;">@</span><span style="color: #990000;">ob_start</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ob_gzhandler'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: {<span style="color: #006699; font-weight: bold;">$allowed</span>[<span style="color: #006699; font-weight: bold;">$extension</span>]}; charset: UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">readfile</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP/1.1 404 Not Found'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

<p>然后修改.htaccess,添加下面的规则：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} ^.*\.(css|js|html|htm)$
RewriteRule ^(.*)$ gzip.php?url=$1 [QSA,L]</pre></div></div>

<p>这样，就会给网站的所有css，js，htm文件启用gzip压缩了。但是这种方法会占用一定的系统资源，如果你的主机配置过低，反而会减慢速度，请根据实际情况应用。</p>
<h3>4. Put CSS at the top / 将Css文件放在头部</h3>
<p>很好理解的一条，主要是为了避免最后加载Css引起的浏览器白屏，改善用户体验。</p>
<h3>5. Put JS at the bottom / 将Js文件放在底部</h3>
<p>同样很容易理解，为了让DOM先行加载。</p>
<h3>6.关闭ETAGS</h3>
<p>一般的小型网站并不需要Etag，我们可以关闭它以便节约带宽。<br />
在.htaccess中添加：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">FileETag None
&nbsp;
Header unset Last-Modified</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/736/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>解决dedecms的Cannot modify header information错误</title>
		<link>http://www.lzpnb.com/archives/719</link>
		<comments>http://www.lzpnb.com/archives/719#comments</comments>
		<pubDate>Wed, 21 Apr 2010 02:33:17 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lzpnb.com/?p=719</guid>
		<description><![CDATA[如果你使用dedecms的UTF8版本，那么你可能会遇到这样的错误 Warning: Cannot modify header information - headers already sent by.........(省略若干字符) 这是一个典型的编码错误原因是相关PHP文件中含有多余的BOM信息，不知道什么是BOM的就Google一下吧（别TMD的用百度！） 解决方法 ： 这里以dedecmsV5.6为例 ：找到inculude文件夹下的channelunit.func.php文件（不同版本文件名不同，反正都是在一个目录下）。 &#60;?php //此文件用于快速测试UTF8编码的文件是不是加了BOM，并可自动移除 //By Bob Shen &#160; $basedir=&#34;.&#34;; //修改此行为需要检测的目录，点表示当前目录 $auto=1; //是否自动移除发现的BOM信息。1为是，0为否。 &#160; //以下不用改动 &#160; if &#40;$dh = opendir&#40;$basedir&#41;&#41; &#123; while &#40;&#40;$file = readdir&#40;$dh&#41;&#41; !== false&#41; &#123; if &#40;$file!='.' &#38;&#38; $file!='..' &#38;&#38; !is_dir&#40;$basedir.&#34;/&#34;.$file&#41;&#41; echo &#34;filename: $file &#34;.checkBOM&#40;&#34;$basedir/$file&#34;&#41;.&#34; &#34;; &#125; closedir&#40;$dh&#41;; &#125; [...]]]></description>
			<content:encoded><![CDATA[<p>如果你使用dedecms的UTF8版本，那么你可能会遇到这样的错误</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Warning: Cannot modify header information - headers already sent by.........(省略若干字符)</pre></div></div>

<p>这是一个典型的编码错误原因是相关PHP文件中含有多余的BOM信息，<span id="more-719"></span>不知道什么是BOM的就Google一下吧（别TMD的用百度！）</p>
<p><strong>解决方法 ：</strong></p>
<p>这里以dedecmsV5.6为例 ：找到inculude文件夹下的channelunit.func.php文件（不同版本文件名不同，反正都是在一个目录下）。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//此文件用于快速测试UTF8编码的文件是不是加了BOM，并可自动移除</span>
<span style="color: #666666; font-style: italic;">//By Bob Shen</span>
&nbsp;
<span style="color: #000088;">$basedir</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//修改此行为需要检测的目录，点表示当前目录</span>
<span style="color: #000088;">$auto</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//是否自动移除发现的BOM信息。1为是，0为否。</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//以下不用改动</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$dh</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$basedir</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dh</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">'.'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$file</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">'..'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$basedir</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;filename: <span style="color: #006699; font-weight: bold;">$file</span> &quot;</span><span style="color: #339933;">.</span>checkBOM<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$basedir</span>/<span style="color: #006699; font-weight: bold;">$file</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; 
&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dh</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> checkBOM <span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$auto</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$contents</span><span style="color: #339933;">=</span><span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contents</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contents</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contents</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">239</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">187</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$charset</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">191</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$auto</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$rest</span><span style="color: #339933;">=</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contents</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rewrite <span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rest</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&lt;font color=red&gt;BOM found, automatically removed.&lt;/font&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&lt;font color=red&gt;BOM found.&lt;/font&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;BOM Not Found.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> rewrite <span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$filenum</span><span style="color: #339933;">=</span><span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;w&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">flock</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filenum</span><span style="color: #339933;">,</span>LOCK_EX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filenum</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filenum</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/719/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP验证手机号的方法</title>
		<link>http://www.lzpnb.com/archives/548</link>
		<comments>http://www.lzpnb.com/archives/548#comments</comments>
		<pubDate>Tue, 19 Jan 2010 00:53:41 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lzpnb.com/?p=548</guid>
		<description><![CDATA[在一些用户注册的表单中，我们需要验证用户的手机号是否正确，如果用户输入的是垃圾内容，就会提醒用户正确输入 &#60;?php &#160; $tel = &#34;15905789568&#34;; $ab = preg_match&#40;&#34;/^13[0-9]{1}[0-9]{8}$&#124;15[0189]{1}[0-9]{8}$&#124;189[0-9]{8}$/&#34;,$tel&#41;; &#160; /* 说明： ^表示这符开始(元字符) $表示字符结尾(元字符) 13为普通字符 [0-9]表示一个0-9的数字 {9} 表示匹配9次 后面的号码，如果是13开头的，中间有9个数字，并结尾，则符合条件 */ &#160; if&#40;$ab&#41; &#123; echo &#34;手机号对了&#34;; &#160; &#125; else echo &#34;不是手机号，别j8乱填！！！！&#34;; ?&#62; 当然，这只能验证用户的手机号是否符合手机号的规则，当然不能验证是否为真是的手机号。不过也有解决的办法，就是在用户提交表单后返回“请稍候，正在验证手机号。。”这时你就赶紧拿起电话，拨打用户填写的手机号，接通后问：“你是XXX吗？”如果对方说打错了，那你就拒绝表单的提交。。。哈哈。开个玩笑！！]]></description>
			<content:encoded><![CDATA[<p>在一些用户注册的表单中，我们需要验证用户的手机号是否正确，如果用户输入的是垃圾内容，就会提醒用户正确输入<span id="more-548"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000088;">$tel</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;15905789568&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ab</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$tel</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
说明：
^表示这符开始(元字符)
$表示字符结尾(元字符)
13为普通字符
[0-9]表示一个0-9的数字
{9} 表示匹配9次
后面的号码，如果是13开头的，中间有9个数字，并结尾，则符合条件
*/</span>
&nbsp;
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ab</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;手机号对了&quot;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> 
  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;不是手机号，别j8乱填！！！！&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>当然，这只能验证用户的手机号是否符合手机号的规则，当然不能验证是否为真是的手机号。不过也有解决的办法，就是在用户提交表单后返回“请稍候，正在验证手机号。。”这时你就赶紧拿起电话，拨打用户填写的手机号，接通后问：“你是XXX吗？”如果对方说打错了，那你就拒绝表单的提交。。。哈哈。开个玩笑！！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/548/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几本比较好的PHP书籍</title>
		<link>http://www.lzpnb.com/archives/34</link>
		<comments>http://www.lzpnb.com/archives/34#comments</comments>
		<pubDate>Mon, 27 Apr 2009 03:30:54 +0000</pubDate>
		<dc:creator>大智若鲁</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lzpnb.cn/?p=34</guid>
		<description><![CDATA[1.《PHP 程序设计》： Programming PHP 出版社：中国电力出版社 原出版社：O&#8217;Reilly&#38;Associates,Inc 译作者：[美]Rasmus Lerdorf &#38;Kevin Tatroe著 邓云佳等译 出版日期：2003年7月 定价：68￥ 字数：519千字 页数：544 说明：该书编写者之一是 PHP 的创造者 Rasmus Lerdorf，本书深入浅出，有很多不错的建议和技巧，融合了作者多年 PHP 开发的井眼，非常不错的一本 PHP 书籍。我感叹一句：里面一些经验和技巧总结真是太棒了。 2.《PHP &#38; MYSQL Web数据库应用开发指南》 原书名：Web Database Applications with PHP&#38;MySQL 出版社：中国电力出版社 原出版社：O&#8217;Reilly&#38;Associates,Inc 译作者：Hugh E.Williams等著 谢君英 欧阳宇译 出版日期：2003年5月 定价：69.00￥ 字数：570千字 页数：599 说明：该书通过一个很好的例子来说明 PHP 和 MySQL 的交互，包括数据库的正规化设计等，推荐这本书的原因是他将程序实例化，并且使用各种技巧来解决 PHP 和 MySQL 数据库的交互，不过阅读该书的时候要有一定的 PHP 基础，该书在亚马逊上是五星级图书。第二版也出来了。值的一读，当你跟着作者做完那套系统后，你会发现你的 PHP [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: x-small;"><strong>1.《PHP 程序设计》：</strong><br />
Programming PHP<br />
出版社：中国电力出版社<br />
原出版社：O&#8217;Reilly&amp;Associates,Inc<br />
译作者：[美]Rasmus Lerdorf &amp;Kevin Tatroe著 邓云佳等译<br />
出版日期：2003年7月<br />
定价：68￥<br />
字数：519千字 页数：544<br />
说明：该书编写者之一是 PHP 的创造者 Rasmus Lerdorf，本书深入浅出，有很多不错的建议和技巧，融合了作者多年 PHP 开发的井眼，非常不错的一本 PHP 书籍。我感叹一句：里面一些经验和技巧总结真是太棒了。<br />
<strong>2.《PHP &amp; MYSQL Web数据库应用开发指南》</strong></span></p>
<p><span style="font-size: x-small;"><span id="more-34"></span><br />
原书名：Web Database Applications with PHP&amp;MySQL<br />
出版社：中国电力出版社<br />
原出版社：O&#8217;Reilly&amp;Associates,Inc<br />
译作者：Hugh E.Williams等著 谢君英 欧阳宇译<br />
出版日期：2003年5月<br />
定价：69.00￥<br />
字数：570千字 页数：599<br />
说明：该书通过一个很好的例子来说明 PHP 和 MySQL 的交互，包括数据库的正规化设计等，推荐这本书的原因是他将程序实例化，并且使用各种技巧来解决 PHP 和 MySQL 数据库的交互，不过阅读该书的时候要有一定的 PHP 基础，该书在亚马逊上是五星级图书。第二版也出来了。值的一读，当你跟着作者做完那套系统后，你会发现你的 PHP 水平真的提高了非常之多。<br />
<strong>3. 《PHP 经典实例》<br />
</strong>原书名：PHP Developer&#8217;s Cookbook<br />
出版社：中国电力出版社<br />
原出版社：Pearson Education<br />
译作者：STERLING HUGHES等著 徐牧等译<br />
出版日期：2003年4月<br />
定价：39.00￥<br />
字数：536千字 页数：359<br />
说明：该书作者之一也是 PHP 开发组成员。该书不是系统的 PHP 学习书目，该书通过很多非常有用的例子，讲述 PHP 的诸多功能，里面包含了非常多的经验和总结以及技巧。深入的探讨了 PHP 各个方面的内容，不是很厚，但是真的非常有价值。<br />
<strong>4. 《MySQL 核心编程》<br />
</strong>原书名：Core MySQL:The Serious Developer&#8217;s Guide<br />
出版社： 清华大学出版社<br />
原出版社：Pearson Education<br />
译作者： （美）Leon Atkinson 著 周靖 许青松<br />
出版日期： 2003-4-1<br />
定价:69.00￥<br />
页数： 552<br />
说明：一个好的 MySQL 工具是官方的 MySQL 手册，我有几本关于 MySQL 的书，其中一本是 O’reilly 的，不过感觉不是很好，因此又买了这本 MySQL 的系统书。一口气看了一上午，很是通俗易懂，深入浅出，特别是从各个范式讨论数据库设计，详细的内置函数讲解，详细的语句说明，非常不错的一本书，虽然书中有少许错误，呵呵。<br />
<strong>5. 《JavaScript 权威指南（第四版）》</strong><br />
原书名：JavaScript:The Definitive Guide,Fourth Edition<br />
出版社：机械工业出版社<br />
原出版社：O&#8217;Reilly&amp;Associates,Inc.<br />
译作者：David Flanagan著 张铭泽等译<br />
出版日期：2003年1月<br />
定价：99￥<br />
字数：964千字 页数：1015<br />
说明：一本非常经典 JavaScript 书籍，目前已经到了第四版本，如果你真的要投注 Web 开发的话，一本关于 JavaScript 的系统书籍是必需的。在一些处理中，它能帮你做很多事情，并且让你更容易控制 HTML 代码。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lzpnb.com/archives/34/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.lzpnb.com @ 2012-02-06 13:54:34 by W3 Total Cache -->
