全球超过万个互联网网站的管理员都在使用PHP使得它成为最为普及的服务器端脚本语言之一其特点是运行速度快稳定可靠跨平台而且是开放源代码软件随你使用的水平不同PHP可以很简单也可以很复杂可以只使用它发送HTML表格元素还可以在PHP应用程序中集成Java和XML
如果你对PHP有一定的了解或者看过一些初步的教材这些技巧可以扩展你对PHP的认识使你掌握一些常见的和高级的PHP功能
本文主要介绍以下十大PHP高级技巧一把PHP安装为Apache的DSO 二使用PHP本身的对话三文件是我们的朋友四PHP和文件系统的维护五丰富的数组函数六动态图像的创建七基于PHP的用户认证八PHP和COM九PHP和Java十PHP和XML
一把PHP安装为Apache的DSO
PHP在Linux/Unix平台上经常与Apache搭配使用在安装PHP时有三种安装方式可供选择静态模式动态模式(DSO)CGI二进制模式
由于易于维护和升级我强烈建议以DSO方式安装PHP例如初次安装时如果安装的PHP仅支持数据库随后希望再安装支持加密的模块只要运行make clean添加新的配置选项然后再运行make和make install即可一个新的PHP模块就会安装在Apache中适当的位置上然后重新启动Apache而无需重新编译Apache
下面的步骤将安装一个全新的Apache并以DSO方式安装PHP
从Apache软件基金会得到最新版本的Apache源代码
把得到的源代码放到/usr/local/或者/opt/目录下或者你指定的任意目录中
运行Gunzip对文件进行解压缩得到后缀为tar的文件
运行下面的命令把文件安装到apache_[version]目录中
tar xvf apache_[version]tar
进入/usr/local/apache_[version]目录(或者在步骤中安装压缩文件的目录)
键入下面的命令为编译Apache作准备用你自己的路径替换其中的[path]例如/usr/local/apache[version]现在已经设置了mod_so的新值它将允许Apache使用DSO模块
回到提示符状态后键入make并等待再次回到提示符状态
执行make install命令
至此Apache已经安装完毕系统将重回到提示符状态接下来我们开始安装PHP
在PHP主页的下载区中找到最新版本的链接
把文件下载到一个适当的目录中例如/usr/local/或/opt/或者你指定的任意目录中
运行Gunzip对文件进行解压缩得到后缀为tar的文件
执行下面的命令把文件安装在php[version]目录中
tar xvf php[version]
进入/usr/local/php[version]目录或在步骤中指定的目录
至此已经作好了以DSO方式安装PHP的准备工作唯一需要修改的配置选项是withapxs(这是Apache的bin目录中的一个文件)为了得到较高的性能我没有安装对MySQL的支持模块
/configure withmysql=/[path to mysql] withapxs=/[path to apxs]
回到提示符状态后执行make命令等待重新返回到提示符状态
执行make install命令
至此系统以DSO方式在Apache的模块目录中安装了PHP并对Apache的文件作适当的修改后返回到提示符状态回到提示符状态后你还需要对Apache的文件作一些修改
找到包含有ServerAdmin的一行添加你的电子邮件地址如下所示
ServerAdmin
找到以ServerName开头的行把它改为真正的值例如
ServerName localhost
找到内容如下所示的小节
# And for PHP x use:
#
#AddType application/x
#AddType application/xs
修改这些行的内容使PHP 的AddType不再成为注释并添加希望在PHP中使用的文件后缀名上面的内容变为如下所示的内容
# And for PHP x use:
#
AddType application/x phtml
AddType application/xs
保存文件回到上一级目录执行下面的命令重新启动Apache
/bin/apachectl start
如果在启动时没有出现错误提示信息就可以通过创建一个名为phpinfophp的只有如下所示一行内容的文件对安装的ApachePHP进行测试
<? phpinfo() ?>
把这个文件保存到Apache的文档根目录(htdocs)中然后开启浏览器键入地址屏幕上就会出现许多的变量和它们的值
如果要重新配置PHP需要再次运行make clean命令然后执行带有一系列选项的/configure命令然后再执行make和make install命令Apache的目录模块中就会出现一个新的模块只要再重新启动Apache加载这个新的模块就一切OK了
二使用PHP本身的对话
PHP 中最令人兴奋的特性应该是对对话的支持PHP 的用户必须使用第三方的软件否则就不能使用对话不支持对话一直是PHP最大的缺憾之一
只要用户在浏览你的网站你就可以利用对话维护与特定用户有关的变量而无需建立多个cookie使用隐藏表格字段或将信息存储在数据库中
在一个网页上启动一个对话就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话
session_start();
启动一个对话将通过cookie向用户发送一个识别字符串(例如fbadcccaead)在服务器端会创建一个与识别字符串匹配的临时文件例如sess_fbadcccaead这个文件中包含注册的对话变量以及它们的值
用来显示对话的作用的最常见的例子是访问计数器启动PHP模块确保PHP代码是文件的第一行在PHP代码之前不要有空格HTML代码和其他的代码因为对话会发送一个头部因此如果在session_start()之前有空格和HTML代码就会得到一个出错信息
<?
// 如果还不存在一个针对某用户的用户则启动一个对话
session_start();
然后注册一个名字为count的变量
session_register(count);
注册一个对话变量后只要对话存在名字为count的变量也就存在现在count变量还没有被赋值如果对它执行加操作它的值就变为了
$count++;
把上述内容综合在一块儿如果还没有启动一个对话就会启动一个对话如果不存在一个对话id就为用户指定一个好了注册一个名字为$count的变量对$count执行加操作表示用户已经首次访问了该网页
要知道用户在当前的对话中访问本页面的次数只要显示$count变量的值即可
echo <P>Youve been here $count times</p>;
全部的访问计数器代码如下所示
<?
session_start();
session_register(count);
$count++;
echo <P>Youve been here $count times</p>;
?>
如果重新加载上述的脚本文件就会发现变量count的值增加了很酷吧
还可以在对话中注册一个数组变量假设我们注册了一个名字为$faves的变量
$faves = array (chocolatecoffeebeerlinux);
可以象注册一个简单变量那样注册一个数组变量
session_register(faves);
引用数组变量与引用简单变量没有什么二样如果一个用户在网页上指出在生活中的爱好时可以把他的爱好注册到一个被称作$faves的数组变量中然后可以在另一个网页中很方便地把这些爱好显示出来
<?
session_start();
echo My user likes:
<ul>;
while (list($v) = each ($faves)) {
echo <li>$v; }
echo </ul>;
?>
然后你就得到了一个关于用户爱好的清单
对话变量不能被查询字符串覆盖也就是说我们不能输入?count=给注册变量$count指定一个新值这一点对于安全很重要只能在服务器端的脚本中删除一个没有注册的对话变量
如果要完全删除一个对话变量首先需要从系统中注销它
session_unregister(count);
要完全删除一个对话变量的脚本是非常简单如下所示
session_destroy();
使用对话变量可以减少访问数据库的频率使代码更加清晰而且可以减少对用户发送的cookie的数量它是最简单的方法了
三文件是我们的朋友
无论你在开发的网站规模的大小都应该意识到代码重用的重要性无论这些代码是HTML还是PHP代码例如你必须至少每年改变一次包含版权信息的页脚如果你的网站含有个页面每年修改一次也是个很烦人的事儿
在PHP中至少有几个函数可以帮助你实现代码重用的目的所使用的函数取决于你所重用的代码主要的函数有
* include() and include_once()
* require() and require_once()
include()函数包含并对给定的文件进行计算例如
include(/