2015-10-08 2 views
-2

Я новичок в php, и я не знаю, почему этот бит кода не работает, пока он должен, я пытаюсь сделать простую проверку пользователя:Основная проверка формы в PHP не работает

$user=$_POST['user'];    
$message=$_POST['message']; 

if (!isset($user) || !isset($message) || $user == ' ' || $message == ' ')  
echo " please fill a valid user and message"; 

Спасибо

+0

http://php.net/manual/en/function.error-reporting.php –

+3

и эта часть кода '$ пользователя = = '' || $ message == '' 'проверяет пробел вместо предполагаемого« пустого ». Просто используйте 'empty()' или еще лучше, трёхмерный оператор. Вы также должны опубликовать свою HTML-форму, которая идет по этому поводу, и оставить догадки из нее. –

ответ

1

Это имеет смысл делать Исеть() проверить на массиве $ _POST, чтобы убедиться, что вы не получите много «Неопределенных индексные» предупреждений.

Возможно, что-то подобное будет работать для вас

$user = isset($_POST['user']) ? $_POST['user'] : null;    
$message = isset($_POST['message']) ? $_POST['message'] : null; 

if (empty($user) || empty($message)) echo " please fill a valid user and message"; 

Поскольку вы новичок в PHP - позвольте мне объяснить эту часть:

$user = isset($_POST['user']) ? $_POST['user'] : null; 

Это, в основном, скажем, чтобы установить $ пользователю $ _POST ['user'], если в массиве $ _POST определен элемент пользователя. В противном случае - переменной $ user установлено значение null. Обычно рекомендуется проверять с isset(), когда вы не уверены, что элемент с некоторым индексом определен внутри массива.

И, конечно, это будет работать только если ваш HTML форма сделана правильно

Вот образец формы можно использовать

<form action="/test.php" method="POST"> 
    <input type="text" name="user" placeholder="Enter your username here"> 
    <input type="text" name="message" placeholder="Enter your message here"> 
    <input type="submit" value="send"> 
</form> 

Убедитесь, что вы замените test.php с вашим имя сценария

Пожалуйста, дайте мне знать, если это работает для вас

в качестве следующего шага - я предлагаю вам проверить this nice article объясняющая отличаются между вариантами использования empty() и isset().

В конце концов, мы могли бы в конечном итоге с чем-то вроде этого

if (empty($_POST['user']) || empty($_POST['message'])) echo " please fill a valid user and message"; 
+0

есть способ сократить это еще больше –

+1

Нет необходимости проверять isset(), затем empty(), пусто делает оба – Tom

+0

Спасибо Fred, Tom, отредактирует мой ответ и добавит некоторые подробности, особенно касающиеся isset() и empty() использование в этом образце –

Смежные вопросы