Вывод текста до нажатия на кнопку(php html)
Совсем недавно познакомился с методами get и post, решил создать что то вроде формы регистрации, чтобы после заполнения полей и нажатия на кнопку выводилось сообщение "Данные сохранены", но вместо этого, сразу выполняется блок else(а когда его нету, выполняется блок if) Подскажите пожалуйста, в чем дело
<?php
$name = $_POST['$name'];
$login = $_POST['$login'];
$pass = $_POST['$password'];
if(isset($_POST['send']) && ( !empty($name) && !empty($login) && !empty($pass))){
echo 'Данные сохранены';
}
else{
echo 'Заполните все поля';
}
?>
<form action="registration.php" method = 'post'>
<label>
Введите имя <input type = 'text' name = 'name' ><br><br>
Введите логин <input type= "text" name = 'login'><br><br>
Введите пароль <input type ='password' name = 'password'><br><br>
<input type="submit" name = 'send'>
</label>
</form>
Ответы (1 шт):
Проблема кроется в том, что в $_POST вы пишете в качестве ключа $name. По сути, в самом $_POST нет такого ключа, но есть ключ name, который как раз приходит в закроме из формы: <input type = 'text' name = 'name' >.
Те названия, которые записаны в name='...' будут аналогично находится в $_POST или других вариациях.
Ваш код должен выглядеть примерно так:
<?php if(array_key_exists('send', $_POST)): ?>
<?php
$name = trim($_POST['name']);
$login = trim($_POST['login']);
$pass = trim($_POST['password']);
$dataIsFull = !empty($name) && !empty($login) && !empty($pass);
?>
<?php if($dataIsFull): ?>
<p>Данные сохранены</p>
<?php else: ?>
<p>Заполните все поля</p>
<?php endif; ?>
<?php else: ?>
<form action="registration.php" method = 'post'>
<label for'name-input'>Введите имя </label>
<input type = 'text' name = 'name' >
<br><br>
<label for'login-input'>Введите логин </label>
<input type= "text" name = 'login'>
<br><br>
<label for'password-input'>Введите пароль </label>
<input type ='password' name = 'password'>
<br><br>
<input type="submit" name = 'send'>
</form>
<?php endif; ?>
Здесь я внес небольшие корректировки:
- Лучше всего создать отдельную переменную
$dataIsFull, которая будет хранить результат условия всех проверок на полноту данных - Конструкция
if(...): else: endif;полезная для разграничения кода.