全球超過
萬個互聯網網站的管理員都在使用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的准備工作
唯一需要修改的配置選項是with
apxs(這是Apache的bin目錄中的一個文件)
為了得到較高的性能
我沒有安裝對MySQL的支持模塊
/configure
with
mysql=/[path to mysql]
with
apxs=/[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/x
s
修改這些行的內容
使PHP
的AddType不再成為注釋
並添加希望在PHP中使用的文件後綴名
上面的內容變為如下所示的內容
# And for PHP
x
use:
#
AddType application/x
phtml
AddType application/x
s
保存文件
回到上一級目錄
執行下面的命令重新啟動Apache
/bin/apachectl start
如果在啟動時沒有出現錯誤提示信息
就可以通過創建一個名為phpinfo
php的只有如下所示一行內容的文件
對安裝的Apache
PHP進行測試
<? phpinfo() ?>
把這個文件保存到Apache的文檔根目錄(htdocs)中
然後開啟浏覽器
鍵入地址
屏幕上就會出現許多的變量和它們的值
如果要重新配置PHP
需要再次運行make clean命令
然後執行帶有一系列選項的
/configure命令
然後再執行make和make install命令
Apache的目錄模塊中就會出現一個新的模塊
只要再重新啟動Apache加載這個新的模塊
就一切OK了
二使用PHP本身的對話 PHP
中最令人興奮的特性應該是對對話的支持
PHP
的用戶必須使用第三方的軟件否則就不能使用對話
不支持對話一直是PHP最大的缺憾之一
只要用戶在浏覽你的網站
你就可以利用對話維護與特定用戶有關的變量
而無需建立多個cookie
使用隱藏表格字段或將信息存儲在數據庫中
在一個網頁上啟動一個對話
就會使PHP引擎知道你想啟動一個對話(如果還沒有啟動)或者繼續當前的對話
session_start();
啟動一個對話將通過cookie向用戶發送一個識別字符串(例如
f
b
a
d
c
c
c
aead
)
在服務器端
會創建一個與識別字符串匹配的臨時文件
例如sess_
f
b
a
d
c
c
c
aead
這個文件中包含注冊的對話變量以及它們的值
用來顯示對話的作用的最常見的例子是訪問計數器
啟動PHP模塊
確保PHP代碼是文件的第一行
在PHP代碼之前不要有空格
HTML代碼和其他的代碼
因為對話會發送一個頭部
因此如果在session_start()之前有空格和HTML代碼
就會得到一個出錯信息
<?
// 如果還不存在一個針對某用戶的用戶
則啟動一個對話
session_start();
然後注冊一個名字為count的變量
session_register(
count
);
注冊一個對話變量後
只要對話存在
名字為count的變量也就存在
現在
count變量還沒有被賦值
如果對它執行加
操作
它的值就變為了
$count++;
把上述內容綜合在一塊兒
如果還沒有啟動一個對話
就會啟動一個對話
如果不存在一個對話id
就為用戶指定一個好了
注冊一個名字為$count的變量
對$count執行加
操作表示用戶已經首次訪問了該網頁
要知道用戶在當前的對話中訪問本頁面的次數
只要顯示$count變量的值即可
echo
<P>You
ve been here $count times
</p>
;
全部的訪問計數器代碼如下所示
<?
session_start();
session_register(
count
);
$count++;
echo
<P>You
ve been here $count times
</p>
;
?>
如果重新加載上述的腳本文件
就會發現變量count的值增加了
很酷吧
還可以在對話中注冊一個數組變量
假設我們注冊了一個名字為$faves的變量
$faves = array (
chocolate
coffee
beer
linux
);
可以象注冊一個簡單變量那樣注冊一個數組變量
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(
/
From:http://tw.wingwit.com/Article/program/PHP/201311/20827.html