2013-09-29 2 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, но я уверен, что форма ведет к одной и той же странице (#) ... Может ли кто-нибудь помочь мне? Вот полный код, на PasteBin: http://pastebin.com/A9z1HHvf

Извините, сообщения об ошибках находятся на французском, но все остальные имена переменных указаны на английском языке. Вам просто нужно знать, что $ errDisplay используется для хранения всех моих сообщений об ошибках и отображения их в нижней части моей страницы.

+0

И как выглядит ваш код? Особенно строка 18 ... – Broxzier

ответ

4

Эта линия является проблематичным:

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

AND имеет lower precedence чем =, поэтому эта строка звучит так:

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

Другими словами, независимо от того или нет $_POST['password'] в сценарии, он работает одинаково - настройка $isFormOk ценность основана только на $_POST['username'] существования.

Что вы должны сделать вместо этого использовать либо && форму булевой 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']' - all '$ _REQUEST' does принимает как' GET', так и 'POST' –