2013-05-07 6 views
0

У меня есть этот код:странно пустого выход POST PHP

<?php 
if (isset($_POST['username']) === true){ 
    echo 'Username is set'; 
    if ($_POST['username'] == ""){ 
     echo '<br> Username is empty'; 
    } else { 
     echo '<br>Username is not empty'; 
    } 
} 
if (isset($_POST['password']) === true){ 
    echo 'Password is set'; 
    if ($_POST['password'] == ""){ 
     echo '<br> Password is empty'; 
    } else { 
     echo '<br>Password is not empty'; 
    } 
} 
?> 

и у меня есть форма:

<input type="text" name="username" placeholder="Username" id="username" onKeyUp="javascript:check_username();"> 
<input type="password" name="password" placeholder="Password" id="password" onKeyUp="javascript:check_password();"> 

функция вызывает Аякс, чтобы проверить имя пользователя/пасс и после того, как она проходит через PHP файл, это выход, когда я оставляю входы пустыми:

Имя пользователя устанавливается Имя пользователя пуст

Пароль установлен Пароль не пуст

Почему это так?

+1

Что такое 'print_r ($ _ POST);' отображение? Редактировать, просто увидел: «это результат, когда я оставляю входы пустыми» -> Разве это не то, что он должен делать? Дисплей «Поле пуст», когда вы оставляете их пустыми. – RelevantUsername

+0

print_r показывает: [объект HTMLInputElement] – jevniky

ответ

0

Когда вы говорите: «Это результат, когда я оставляю входы пустыми». Разве это не должно быть сделано? Дисплей «Поле пуст», когда вы оставляете их пустыми.

Если вы ожидали, что код не показывать:

Username is set 

потому, что вы оставив поле пустым, вы можете знать, что в то время как значение установлено или не в поле, форма отправки значение $ _POST ['field'] в любом случае для каждого поля в форме (кроме единицы с отключенным атрибутом).

Попробуйте использовать print_r($_POST); или ваш инструмент для отладки вашего браузера, чтобы показать, какие значения переданы на эту страницу PHP.

0

является значение пароля? Вы уверены, что его ценность на самом деле пуста?

Можете ли вы разместить код, связанный с входами? Вы не опубликовали всю форму; может быть, так как вы не закрыли теги <input>, форма добавляет некоторый текст в значение перед отправкой.

0
if(!empty($_POST)) { 
foreach($_POST as $key => $val) 
{ 
    ${$key} = $ val; 
} 

if(empty($username)) { 
    echo "Username empty"; 
} else { 
    echo $username; 
} 

if(empty($password)) { 
    echo "Password empty"; 
} else { 
    echo $password; 
} 
} 

Что это делает делает переменную из имени атрибута вашего поля формы ввода