這是一篇給初學者的FAQ,許多基本的問題都可以在這邊找到,內容也會隨時更新
發文前先來這邊找找,或許你要的答案就在裡面
=========================== PHP 基礎問答 ===========================
Q. 什麼是PHP?
A. PHP是一種伺服器端的腳本語言,能在網頁伺服器上執行。
經過PHP引擎解析後,回傳網頁用的標記語言(html/xhtml/xml)
或其他文件型態供使用者端使用,全名為PHP: Hypertext Preprocessor。
以下為PHP運作方式的圖解(jimmyken793提供)
伺服器端 使用者端
┌─────────┐
┌────┐輸出 ∣瀏覽器解析引擎 ∣
∣PHP引擎 ∣→→→∣解讀文件結構 ∣
└────┘HTML碼∣順便執行Javascript∣
∣還有其他東西 ∣
└─────────┘
Q. PHP能做什麼?
A. PHP的主要用途在網路程式上,搭配各種資料庫系統,產生動態網頁
另外也可以當作Shell Script來用(類似Windows系統下的批次檔)
也有利用PHP語言來開發GUI的PHP應用,例如PHP-GTK和PPform
Q. PHP不能做什麼?
A. PHP是在伺服器端執行的語言,因此各種使用者端的『即時改變』
例如直接改變網頁文字大小、產生警告視窗等,PHP都不能做
要用這些功能請找使用者端的程式語言,例如Javascript
Q. 我應該學PHP 5還是PHP 4?
A. PHP 5的功能比起PHP 4更完整、速度更快,建議學PHP 5就好
至於PHP 4,大部份的內容和PHP 5一樣,多數的不同在物件導向(OO)的部份
跟PHP 5也不會差太多,基本的東西都是一樣的。
Q. 如何學好PHP?
A. 此題是一個大哉問! 可以從幾個方向來看:
1. 準備環境
不管你用什麼系統,你要學會安裝與設定。如果你的目標是寫動態網頁,
那就要使PHP能配合網站伺服器來執行。
常用的架站軟體有:Appserv、EasyPHP、Xampp等
只想要PHP環境的可以參考 LightyPHP
http://www.nhcue.edu.tw/~u9115043/LightyPHP/
2. 先備知識
要寫網頁總不能不認識html的寫法,別以為Dreamwaver能搞定你所有的問
題,他只是一個加速開發的工具,你要有基本的html知識才能夠駕馭他來
完成你的動態網頁,當你不懂這些基本的知識,加速開發的工具,只會加
速你惡搞的情況罷了。
此外,另一個重要的觀念是分清楚什麼是client,什麼是server。
FAQ和討論版都有相關資料,請詳讀。
3. 開始用PHP
所謂的開始用PHP,只是你已經"知道"語法怎麼用了,或是你已經準備好語法
的大小抄(cheat sheet)後,要開始來寫點有用的東西的時候了。千萬別寫空
虛的"聖誕樹"或令人無奈的"排版精美的九九乘法表"。試著以一個不使用資
料庫的留言版為首要目標。
學習的目標為:
1) 基本的檔案I/O
2) 陣列相關函式
3) 日期時間的應用
4) Server變數的使用
例如:$_GET/$_POST/$_FILES、發文者ip、script目錄的位置...等
4. 怎麼辦?不知道去哪裡找答案
有三個選擇:
1) 找PHP官方手冊 http://www.php.net/manual/en/
PHP最完整、最正確的手冊,只要翻這邊問題就解決一半以上
什麼?看不懂英文?請找一個好人來翻譯給你看XD
2) Google
這需要說明嗎?不會用的請直接按Ctrl + Alt +Del兩次
3) PTT的PHP版
如果前面兩個都找不到答案,歡迎來到溫暖的PHP版
版上有許多PHP神人可以幫你解答問題,但是請注意禮貌和版規
=========================== Session 怎麼用 ===========================
Q. 什麼是Session?
A. Session是一種存在伺服器端的變數,讓使用者在不同頁面之間可以存取同樣的變數
最常見的應用在於購物車、使用者登入的處理上,是一個很方便的功能。
Q. Session怎麼運作?
A. 用流程圖來說明:
使用者連上網頁 → 伺服器端產生session_id(一種極難重複的字串) →
將session_id寫入使用者端cookie或GET變數,藉以分辨使用者 →
進行Session變數的操作(如同一般PHP變數) →
操作完畢,使用者斷線,伺服器端刪除session_id和Session變數
(某些特殊需求下可以設定不刪除伺服器端的session_id)
Q. 如何使用Session?
A. 以下解釋程式碼
<?php
//任何一個PHP程式要使用Session變數前,都要告知伺服器啟動Session功能
//你也可以開啟php.ini的設定session.auto_start,讓每個PHP程式都會啟動Session功能
//基本上不建議開啟,因為不是每個程式都會用到Session,需要的時候開啟就好
session_start();
//直接使用$_SESSION陣列就可以使用Session變數
$_SESSION['var'] = 'some_value';
//刪除Session變數只要unset就好
//不要直接unset($_SESSION),這樣會把所有Session變數都刪除
unset($_SESSION['var']);
?>
Q. 有些書上說要用session_register()這個函數?那是什麼?
A. session_register()是PHP 4.1之前的用法,現在直接使用$_SESSION[]就好
請忘記session_register()這個東西吧!
============================= 特別感謝 =============================
版友qrtt1、alpe、PsMonkey、jimmyken793的貢獻
版主ottokang