PHP

透過網址列取得PHP檔案的輸入

在前面的文章中我們瞭解到PHP程式碼是一個在伺服端執行的程式,它的輸出(response)對象是使用者端的瀏覽器,所以它的輸入內容是HTML的原始碼,在瀏覽器收到來自於伺服器端的response之後,會再自行解譯排版,成為使用者看得到的網頁。

那麼,如果我們有一些資料要輸入給PHP程式去進行計算,那麼這些資料或是一些動作的選擇,該如何傳遞給伺服器中的PHP程式呢?除了透過表單之外,也可以透過網址列的方式來傳遞,前者是透過POST的協定,在後面一篇文章中會提到,後者則是透過GET協定,玆說明如下。

在瀏覽網站時,網址列中的網址(通常我們會把它稱為URL)除了包含網站的網址之外,也可以包含要存取的程式或網頁檔的資料夾以及程式檔本身,經常,我們會看到如下所示的樣子:

http://example.com/product/detail.php

假設上述的網址是前往網站中要求一項產品的資訊,那麼我想要指定某一個特定的產品,就需要以參數的方式傳遞給detail.php檔案才行,又假設產品的編號變數是sku,其內容希望是1002這項產品,那麼網址就可以編排成下面這個樣子:

http://example.com/product/detail.php?sku=1002

另外一個情況,我們想要列出某一類別的產品,類別變數是cat,items則是用來告訴網頁每一頁要顯示的產品數量,以及page指定是產品的第幾頁,則網址可以編碼成如下所示的樣子:

http://example.com/product/list.php?cat=100&items=20&page=2

上述的網址list.php就可以得到3個變數的內容,分別是 cat的內容是100,items的內容是20,而page的內容則為2。

那麼,在detail.php以及list.php中要如何取出這些變數拿來使用呢?我們以計算BMI的例子來測試。

<?php 
	$height = $_GET["height"];
	$weight = $_GET["weight"];
	$bmi = $weight / $height ** 2;
	echo "身高:" . $height . "公尺<br>";
	echo "體重:" . $wiehgt . "公斤<br>";
    echo "BMI = " . round($bmi, 1);
?>

假設這個程式的名稱是index.php,並放在test資料夾之外,則以下列的網址瀏覽:

http://localhost/mysite/test/?height=1.74&weight=68

即可得到以下的輸出畫面:

不過上述的程式有一個風險,就是如果在網址列中沒有輸入任何資訊的話,則輸出的結果會是空的內容,這樣的情況並不是很好,因此正確的方式是利用if敘述先檢查輸入資料的正確性,如果不正確的話,就要說明在網頁中,程式修改如下:

<?php 
	$height = $_GET["height"];
	$weight = $_GET["weight"];
	if ($height!=NULL and $weight!=NULL) {
		$bmi = $weight / $height ** 2;
		echo "身高:" . $height . "公尺<br>";
		echo "體重:" . $wiehgt . "公斤<br>";
	    echo "BMI = " . round($bmi, 1);
	} else {
	  	echo "你沒有在網址中指定height和weight";
	}
?>

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s