Forum und email

一個有實際用途的程式

現在讓我們來編寫一個具有實際用途的程式,用它來識別拜訪者所使用的瀏覽器種類。識別瀏覽器的方法是檢查瀏覽器傳遞給伺服器的 user agent 字串。此字串是 HTTP 要求的一部份,而它的資訊是以變數的形式儲存。PHP 的變數是以一個金錢符號﹝$﹞為開端,而現在我們要的變數是 $_SERVER["HTTP_USER_AGENT"]

Note: $_SERVER 是一個特別的 PHP 保留變數。它被稱為 Autoglobal﹝或 Superglobal﹞,含有網頁伺服器的所有資訊。這些特別的變數是在 PHP » 4.1.0 版本起才加入的。在此版本之前,我們使用的是舊式的 $HTTP_*_VARS 陳列,如 $HTTP_SERVER_VARS。雖然它們已退役,但仍舊存在。請順便參考一下舊程式碼注意。

顯示此變數,我們可以使用下列程式碼:

Example#1 輸出陳列中的變數

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

上述程式碼的輸出樣本:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
     

PHP 擁有許多不同種類的變數,而上述例子中,我們只不過列印出了陳列的其中一個元素。

$_SERVER 只是其中一個 PHP 自動提供給您的變數。詳細清單請查看手冊中保留的變數一節,或建立一個有下列一句敘述的檔案:

Example#2 以 phpinfo() 顯示所有先前定義的變數

<?php phpinfo(); ?>

當您以瀏覽器存取上述檔案時,您將會看到一篇充滿著 PHP 資訊的網頁,當中也包括了所有您可使用的變數清單。

當然,您可以在一個 PHP 標籤裡編寫多行、功能不同的 PHP 敘述,組合成為一個程式區塊。例如,我們要檢查造訪者的瀏覽器是否是 Internet Explorer,我們可以用:

Example#3 使用控制架構函數的範例

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo 
"You are using Internet Explorer<br />";
}
?>

上述程式的輸出樣本為:

You are using Internet Explorer<br />

在此,我們介紹了一個新的概念,使用了 if 敘述。如果您熟悉 C 的語法,那麼您就不會對它感到陌生了。若您對 C 語言或任何其他程式語言沒有任何認識的話,或許您應該先參考一些 PHP 入門書籍或閱讀此手冊的語法參考一節。» 在此有一些 PHP 書籍的清單供您參考。

上述例子介紹了另一個新的概念:strstr() 函數的使用。strstr() 是 PHP 提供的其中一個函數,而它的功能是在一個字串中找尋另一個字串。如,我們要在 $_SERVER["HTTP_USER_AGENT"] 中尋找 "MSIE" 這一字串。如果找到該字串,此函數傳回 TRUE,否則就傳回 FALSE。如果它傳回 TRUE,那麼 if 敘述的評估值將是 TRUE,然後 { 大括號 } 裡的程式碼也就被執行了。相反的,若 if 的評估值是 FALSE,那 if 敘述就被跳過了。請嚐試使用 if,else,或其他函數如 strtoupper()strlen() 來建立類似的程式。如果您不知如何使用某函數,請參閱其手冊。每一個函數的手冊都有範例和說明。此外,PHP 手冊中的如何閱讀函數定義PHP 函數也有助於對 PHP 語法的了解。

接下來我們將示範如何在 PHP 程式區塊中進入和跳離 PHP 模式。

Example#4 混合使用 HTML 和 PHP 模式

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr must have returned false</h3>
<center><b>You are not using Internet Explorer</b></center>
<?php
}
?>

上述程式的輸出樣本為:

<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>

除了可以使用 echo 敘述輸出字串,我們也可以跳離 PHP 模式而直接以 HTML 輸出文字。使用這種方法的重大意義在於程式本身的邏輯並不受到影響,而哪一個 HTML 區塊會被輸出還是取決於 strstr() 所傳回的值是 TRUE 還是 FALSE,即有否找到 MSIE 這一字串。