Переменных кажется пустым, если заявление, но не может быть пустымПеременные кажется пустым, если утверждение, но оно не пусто
Эй, ребята, я новичок в PHP, и я пытаюсь сделать простой сайт, где Я могу войти в систему, выйти из системы и изменить свой пароль. Код работает, но у меня есть некоторые проблемы с отображением сообщений об ошибках пользователям.
На сайте для смены пароля у меня есть форма с 3 полями ввода, первая для вставки старого пароля, вторая для вставки нового и последнего - для подтверждения нового пароля.
Код:
<form action="changepw.php" method="post">
<input id="oldPassword" type="password" class="form-control" name="oldPassword" placeholder="Aktuelles Passwort" required="">
<input id="password" type="password" name="password" class="form-control" placeholder="Neues Passwort" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required="">
<input id="password2" type="password" name="password2" class="form-control" placeholder="Passwort wiederholen" required="">
<button type="submit" class="btn btn-info c-btn">Passwort wechseln</button>
</form>
Мой PHP код начинается со следующим:
$error = '';
session_start();
if(isset($_SESSION['loggedin'])){
changepassword();
}
else {
header('Location: index.php');
}
В функции changepassword()
, я проверяю, если форма была отправлена, и если да, то я иду вперед с паролем изменение. Если ввод из поля ввода oldPassword
не совпадает с паролем в базе данных, переменная $error
будет установлена на «Неверный пароль» (это работает правильно, я тестировал его с помощью echo
).
Позже в HTML, я поместить этот кусок кода, чтобы напечатать сообщение об ошибке, если оно не пусто:
<?php
if(!empty($error)){
echo "<div class='alert alert-danger' role='alert'>$error</div>";
}
?>
Проблема в том, что $error
кажется пустым каждый раз, даже когда я установить сообщение об ошибке.
Странная вещь, я использую этот подход по той же самой причине в своем файле входа, чтобы проверить, правильно ли пароль, и его работа без проблем.
Похоже, что проблема с областью действия, вы изменяете значение ошибки $ внутри функции, но в глобальной области она все еще пуста. – JrmC