Есть такой код для обновления пароля:
if(isset($_POST['submit'])) {
if (empty($_POST['password'])) {
header('Refresh: 3; URL = /admin/newpass');
echo '<p class="error">Введите новый пароль!</p>';
}
/* elseif (!preg_match('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$/u', $password)) {
header('Refresh: 3; URL = /admin/newpass');
echo '<p class="error">Пароль может состоять только из цифр и букв латинского алфавита!</p>';
} */
else {
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->formatOutput = true;
$doc->load('xml/admin.xml');
$root = $doc->documentElement;
if (isset($_POST['password'])) {
$password = $_POST['password'];
$pass = $root->getElementsByTagName('password');
if (isset($password['password']) and trim($password['password']) != '') {
$pass = $pass->item(0);
$pass->nodeValue = crypt($password['password']);
}
}
$doc->save('xml/admin.xml');
header('Refresh: 3; URL = /admin');
echo '<p class="valid">Пароль обновлён</p>';
}
}
Этот код работает отлично, но, пропускает пустое поле. Т. е., если ничего не ввести и отправить на сервер, то всё равно выводится «Пароль обновлён», при этом, конечно, записи в файл не происходит.
Вроде бы всё логично: есть условие, что поле должно быть заполнено и если всё ОК, то пропускаем на перезапись в файл. Вообще не могу понять в чём может быть проблема.
Вопрос решён вот такой проверкой:
if (isset($_POST['password']) && empty($_POST['password']['password']))
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости