PHP 手冊
上一頁 | 章 2.PHP 入門教學 | 下一頁

# 一個有實際用途的程式

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

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

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

示範 2-2. 輸出陳列中的變數
`<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>`
上述程式碼的輸出樣本：
    Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

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

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

示範 2-3. 以 phpinfo() 顯示所有先前定義的變數
`<?php phpinfo(); ?>`

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

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

示範 2-4. 使用控制架構和函數的範例
`<?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 模式。

示範 2-5. 混合使用 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 這一字串。

上一頁 | 最開頭 | 下一頁
您的第一個 PHP 網頁 | 上一層 | 處理表單