Apache web submit 403 error, access forbbiden, Undefined variable

第一次搭建網頁

在本機 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 編程,以上備忘。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章