精華區beta PHP 關於我們 聯絡資訊
這是一篇給初學者的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