В index.php у меня есть область ввода для emailId, код php для отображения ошибки пользователем и моя страница входа в систему. У меня есть код php для хранения идентификатора электронной почты пользователя в базе данных (mysql). И я не хочу, чтобы пользователь отправлял пустой идентификатор электронной почты для решения этой проблемы. Я написал «if (empty ($ uemail)) {», но я хочу показать, что область ввода пользователя пуста, изменив цвет границы области ввода текста на красный.
index.php
<input type = "email" id = "email" name = "email" placeholder = "Email">
<?php
session_start();
if (isset($_SESSION['error'])){
echo '<script type = "text/javascript">
function downIt() {
document.getElementById("input").style.cssBorder = "color: red";
}
</script>';
}
unset ($_SESSION['error']);
session_destroy ();
?>
login.php
$uemail = $_POST['email'];
if (empty($uemail)){
$_SESSION['error'];
Header( 'Location: index.php');
exit;
}
else{
query code....here....
}
если я понял ваш вопрос, вы можете использовать атрибут, необходимый в теге html и. Я согласен с тем, что @Kazz поместил session_start () в качестве кода первой строки ... пример необходимого тега <input type = "email" id = "email" name = "email" placeholder = "Email" required>
Всем спасибо за ответ.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему бы вам не попробовать вместо этого просто HTML5? Например:
<style>
.was-validated input:invalid {
border: 1px solid red;
}
</style>
<script>
// Bootstrap code
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function () {
'use strict';
window.addEventListener( 'load', function () {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName( 'needs-validation' );
// Loop over them and prevent submission
var validation = Array.prototype.filter.call( forms, function ( form ) {
form.addEventListener( 'submit', function ( event ) {
if ( form.checkValidity() === false ) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add( 'was-validated' );
}, false );
} );
}, false );
})();
</script>
<form method = "post" action = "login.php" class = "needs-validation" novalidate>
<input type = "email" id = "email" name = "email" placeholder = "Email" required />
<br />
<input type = "submit" />
</form>
Но если вы все равно хотите использовать PHP, я не вижу причин использовать Javascript.
index.php
<?php
session_start();
$error_border = '';
if ( isset( $_SESSION[ 'error' ] ) ) {
$error_border = ' style = "border: 1px solid red;"';
}
unset ( $_SESSION[ 'error' ] );
?>
<form method = "post" action = "login.php">
<input type = "email" id = "email" name = "email" placeholder = "Email"<?php echo $error_border; ?> />
<br />
<input type = "submit" />
</form>
<?php session_destroy(); ?>
login.php
<?php
session_start(); // resume existing session
$uemail = $_POST[ 'email' ];
if ( empty( $uemail ) ) {
$_SESSION[ 'error' ] = 1;
Header( 'Location: index.php' );
exit;
} else {
query code....here....
}
session_start();должен вызываться перед любым выходом, поэтому, возможно, сеансы не работают, как вы думаете (или работают из-за буферизации вывода, но все же вы должны это исправить), также$_SESSION['error'];должен вызывать уведомлениеUndefined indexи фактически не настраивать сеанс, правильный:$_SESSION['error'] = true;. idk, почему вы отделяете обработчик отправки формы в другой файл, но обычно вы обрабатываете отправку формы прямо перед выводом формы html, а в случае ошибки просто выполните что-то вроде:<input ... <?= ($error?' class = "error"':'') ?>>, и вам вообще не нужны сеансы.