8. PHP

 請尊重智慧財產權,若有抄襲等事宜請當事人修文,轉載並非註明出處就了事,要獲得原作者同意,否則皆屬於違法!!

 

1. PHP Basics

PHP(PHP: Hypertext Preprocessor)是一種跨平台,嵌入式的伺服器端執行的描述語言。它支援許多資料庫,也支援各項通訊協定,更可以輕易的開發出許多客戶端的網路應用程式。例如:互動式網頁、動態網頁、留言板、討論區、電子郵件等等。

舉例來說,我們要做一個"動態"網頁,這邊所說的動態並不是指網頁上有幾個會動的圖片,或者是跑馬燈等等而已,而是指"動態的內容"。

什麼是 "動態的內容"?"靜態"與"動態"如何區分?

例如我們想要更新網頁上的公告或內容時,我們得重新編輯該網頁(.HTML...)再上傳回去,這樣的模式就是"靜態",因為網頁無法即時的更新訊息;

如果你在這網頁中加入存取"資料庫"的語法,使這個網頁能自動從資料庫中擷取最新資訊,那麼它就是一個"動態"的網頁了,所以之後想要更新訊息的話,只要從資料庫更改就可,而不需要去改這個網頁了。

整個運作的結構大致如下:

"靜態"的運作方式:當使用者向伺服器端提出需求,要瀏覽某個.HTML檔時,伺服器端會直接將其內容回傳給使用者。

"動態"的運作方式:當使用者向伺服器端提出需求,要瀏覽某個.PHP檔時,伺服器端會先將其內容轉送給PHP Engine處理, 在處理的過程中也還能搭配"Database"或"File System"來共同作業,然後再將處理完的內容回傳給伺服器端,最後再由伺服器端送給使用者。 

在這介紹一個簡單學習php語法的網站(更新) :http://www.php5.idv.tw/html.php?mod=article&do=show&shid=43

 

 

PHP能夠做些什麼?

PHP是在伺服器端執行的程式語言,所以任何其它的CGI程式所能做得到的,它都能做到。像是從表單中收集資料,或是產生動態的網頁內容,或者是傳送及接收cookies等等,PHP都能做得到!

PHP主要運用在下列這三個部份

  1. 伺服器端的程式語言:PHP大多數被使用在這個地方,要運用在這個地方你必需要有三樣東西,一個是PHP的剖析器(CGI或Server模組),一個是網站伺服器,還有一個則是網頁瀏灠器,如此才能透過伺服器來瀏灠PHP網頁。
  2. Command line scripting:你可以使PHP執行在一個沒有任何伺服器或是瀏灠器的地方,你只需要使用到一個PHP剖析器即可。這種大多是使用cron指令 (在*nix或Linux系統上),或是使用排定的工作(Windows)來定期的執行程式,這些程式能夠運用在簡單的文字處理工作。
  3. 撰寫用戶端GUI應用程式:PHP也許不是個用來撰寫視窗應用程式最好的語言,但如果你相當的瞭解PHP,你可以使用PHP最新的特色,那就是使用PHP-GTK來撰寫用戶端的應用程式,使用PHP-GTK你也可以撰寫出跨平台的應用程式。

PHP能使用在大多數的作業系統,像是Linux、HP-UX、Solaris、OpenBSD、Microsoft Windows、Mac OS X、 RISC OS等等都能使用。PHP也能在大多數的網站伺服器上執行,像是Apache、 Microsoft Internet Information Server、Personal Web Server、Netscape and iPlanet servers、Oreilly Website Pro server、Caudium、Xitami、 OmniHTTPd。在大多數的伺服器中,PHP被編譯其中的一個模組,但PHP也能編譯成CGI模式,使PHP成為一個CGI處理程序。

PHP的功用不單單只是輸出HTML文件而己,它的功能還包括了輸出圖形、PDF檔、及Flash檔。你當然也可以讓它輸出一些文字,像是XHTML及任何其它的XML檔,PHP可以產生出以上這些檔案,並且將它們儲存在伺服器上。PHP也提供了相當多的協定,像是LDAP、IMAP、SNMP、 NNTP、POP3、HTTP、COM等等,還有其它相當多的擴充模組可以使用。

 

3. Form Processing and Business Logic
與XHTML互動,必須要先連結 EX: <form method = "post" action = "form.php">
XHTML裡面 <input type = "text" name = "email"/>
PHP寫法extract($_POST)
print(<td>$email<t/d>) //執行時就會去呼叫extract 的 function取得email的值

$_GET變數: 是一陣列用來收集GET方法得到的值(有最大直限制,不能超過100 characters)

<form action="welcome.php" method="get">Name: <input type="text" name="name" />Age: <input type="text" name="age" /><input type="submit" /></form>
當使用者按下按鈕,傳出的網址會是http://www.w3schools.com/welcome.php?name=Peter&age=37
 此時welcome.php檔會使用GET method 來得到welcome.php裡的資料,ID 就是name和age
 Welcome <?php echo $_GET["name"]; ?>.<br />You are <?php echo $_GET["age"]; ?> years old!
$_POST變數: 是一陣列用來蒐集POST方法的值(沒有資料限制)
<form action="welcome.php" method="post">Enter your name: <input type="text" name="name" />Enter your age: <input type="text" name="age" /><input type="submit" /></form> 
 當使用者按下按鈕,傳出的網址會是http://www.w3schools.com/welcome.php
 此時會從welcome.php POST 值
Welcome <?php echo $_POST["name"]; ?>.<br />You are <?php echo $_POST["age"]; ?> years old! 
$_REQUEST變數: 包含$GET、$POST、$COOKIE的內容 。
Welcome <?php echo $_POST["name"]; ?>.<br />You are <?php echo $_POST["age"]; ?> years old! 
 4. Connection to DB 

假設XHTML的下拉式選單的類別是select
先用$query = "SELECT".$select." FROM books"; 把資料從SQL取出來
用if(!($database = mysql_connect("localhost","帳號","密碼")))判斷使用者取權限
在用if(!mysql_select_db("product",$database))
和if(!($result = mysql_query($query,$database)))
取出
要顯示錯誤請用mysql_error()
取完記得用mysql_close($database)關起來

印出表格範例
for($counter = 0; $row = mysql_fetch_row($result);counter++)
{
print("<tr>");
foreach($row as $key => $value)
print("<td>$value</td>");
print("</tr>");
}
最後可以用$counter顯示共有幾筆資料

5. Session and Cookie
假如XHTML的textfield的name是Name的設cookie方式
setcookie("Name",$Name,time() + 60 * 60 * 24 * 5);
cookie會存在C:\Doument and Settings\name\cookies資料夾下
用IE的話會存為index.dat
用Firefox會存為 name@localhost.txt

讀取存好的cookie
foreach($_COOKIE as $key => $value)
print("<tr><tr>$key</td>
<td>$value</td><tr>");

6. Dynamic Content
使用if(!iserror)來確保正確才執行
使用$variable稱為variable variable可以讀取等於該變數值的變數名稱
使得能夠動態的reference到想要的變數名稱
使用quotemeta($變數)來讓變數的特殊符號只當成字串處理

新增筆記(496511700)   8.PHP 與其他script語法的比較 

 

 

  程式    PHP    ASP   JSP
  系統平台    跨平台    Win32    跨平台 
  Web Server    ApacheIIS....   IIS   ApacheIIS...
  執行速度/效率  快 快  超快 
  穩定性  尚可 佳 
  開發時間  很快  很快 快 
  學習速度/困難度   快/容易   快/容易   還好/有點難

其實做這個並沒有很深入
是告訴你如何使用PHP語法
 

像我們常看到的一些基本的 
PHP 的標準資料型態
integer 123 整數
double 3.1416159 浮點的數字
string "hello WEB" 文字字串
boolean true/false bloolean函數,true 跟 false
object    物件
array  陣列
 

以及
資料型態的函式
doubleval() - 讓他傳回 double 的型態。
intval() - 讓他傳回 int 的型態。
var_dump() - 顯現出變數的型態和資料。
settype() - 改變變數的type。
strval() - 接受數值並回傳 string 的型態。

特殊的資料型態
Resource - 使用外來的資料
NULL - 未定義的變數

轉換變數
跟 settype() 不同因為轉換 (casting) 會複製變數,但不會改變原來的變數。

code:
<?php
$undecided = 1.234;
$holder = (double) $undecided;
這時候PHP會自動作轉換

code:
<?php
$hw = "9cm";  // 如果在這裡你只想要顯示出9的話
$hw = (integer) $hw;
echo "寬度是 $hw 公分";
常數
define() - 定義出一個常數。
code:
<?php
define("CONSTANT", "WEB");
如果提供第三個 boolean 的參數
可決定大小寫是否相同。

現在讓我們比較一下寫CGI跟PHP 其實很多都能撰寫CGI但PHP只是其中一種而已

不過PHP就是執行效率快 穩定度高 學習門檻較低 較多網站使用PHP撰寫

當然在眾多寫CGI的程式中 雖然使用NSAPI 及 ISAPI 會花費不少時間在開發過程之中,不過在穩定上線後,這兩種界面反倒是效率最佳的方法

但是,在 Web 的後端 CGI 程序,就像魚與熊掌一般不能兼得,沒有高效率又開發方便的選擇。不過目前這樣看來 PHP 是處於開發容易、效率也不差的平衡點上。