第一次搭建網頁
在本機 win8.1 上用 easyPHP dev 14.1 搭建服務器環境:PHP, Apache, MySQL
對照《PHP + MySQL 八大動態 Web 應用實戰》書上的實例寫一個博客類網站。
然而書成於08年,很多內容都已經跟不上時代了,導致一些莫名其妙的錯誤:
第一個就是:
PHP mysql_connect() 函數
Note:
本擴展自 PHP 5.5.0 起已廢棄,並在將來會被移除。應使用 MySQLi 或 PDO_MySQL 擴展來替換之。參見 MySQL:選擇 API 指南以及相關 FAQ 以獲取更多信息。用以替代本函數的有:
•mysqli_connect()
•PDO::__construct()
// $db = mysql_connect($dbhost, $dbuser, $dbpassword);
// mysql_select_db($dbdatabase, $db);
$link = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbdatabase);
類似的還有不少 mysql_ 開頭函數導致 warning: depricated.
解決方法:http://www.ttlsa.com/php/deprecated-mysql-connect/
第二個就是:
提交表單時會提示 403:Access forbidden 的錯誤。一般在這個錯誤提示下我們就會檢查文件權限問題,網上也給出了一堆解決方法,什麼修改 Apache 配置文件,設置權限啥的。
但實際上提交表單後會通過 header("Location: ") 函數重定位到本文件 SCRIPT_NAME,在提交表單前網頁能夠正確的顯示,提交表單重定位到自己文件後卻有權限問題,這讓人費解。
如果此時在未提交表單頁面上查看源文件,看看服務器上經過 PHP 解釋器的輸出,會發現:
<form action = "<br />
<b>Notice</b>: Undefined variable: SCRIPT_NAME in <b>C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\bigdataweb\viewentry.php</b> on line <b>85</b><br />
?id=1" method = "post">
Undefined variable SCRIPT_NAME;
查找資料發現:
PHP錯誤:Notice:Undefined variable: SCRIPT_NAME 寫到:
$SCRIPT_NAME這個變量出了問題。網上搜了下,資料較少,沒有搜到明確結果,不過看基本的寫法都是 $_SERVER['SCRIPT_NAME'],大概是寫法變了。
把上面的代碼中$HTTP_HOST和$SCRIPT_NAME改爲$_SERVER['HTTP_HOST']和$_SERVER['SCRIPT_NAME']即可。
修改後果然就能夠順利提交表單了。
對於迭代快速的技術,應該選擇新近的書籍或者資料來閱讀,以免發生這種尷尬的情形。
初次接觸 web 編程,以上備忘。