2013-09-29 47 views
0

我試圖做一個PHP連接腳本,在同一個頁面表單和數據處理,但是當我嘗試我的代碼,我總是得到2個錯誤:

Notice: Undefined index: password in C:\Users\Simon\Documents\Site FTM\connexion.php on line >7

Fatal error: Call to a member function fetch() on a non-object in C:\Users\Simon\Documents\Site FTM\connexion.php on line 18

我知道PHP在$ _POST中找不到名爲'password'的索引,但我確信表單正在導向相同的頁面(#)...可以有些幫助我嗎?這裏是整個代碼,在PasteBin上:http://pastebin.com/A9z1HHvf

對不起,錯誤信息是法語的,但所有其他變量名稱都是英文的。您只需要知道$ errDisplay用於存儲我所有的自定義錯誤消息並將其顯示在我的頁面底部。

+0

你的代碼是什麼樣的?特別是第18行... – Broxzier

回答

4

這條線是有問題的:

$isFormOK = isset($_POST['username']) AND isset($_POST['password']); 

ANDlower precedence=,這就是爲什麼該行的內容是這樣的:

($isFormOK = isset($_POST['username'])) 
    AND isset($_POST['password']); 

換句話說,無論是否$_POST['password']是在腳本中,它以同樣的方式工作 - 僅基於$_POST['username']存在設置值$isFormOk

你應該做的,而不是要麼使用&&形式的布爾and(它比=更高的優先級):

$isFormOK = isset($_POST['username']) && isset($_POST['password']); 

...或者,甚至更好,只是使用的事實,isset可以採取更多不止一個說法:

$isFormOK = isset($_POST['username'], $_POST['password']); 

報價the doc

If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

-1
if(isset($_REQUEST['password'])){ 
$pass = $_REQUEST['password']; 
} 

現在您可以使用$pass,因爲它包含正在發佈的值。

+0

OP的代碼已經引用'$ _POST ['password']' - 所有'$ _REQUEST'都是同時使用'GET'和'POST' –