#php #html
#php #HTML
Вопрос:
Моя страница входа в систему работает отлично.
Он не использует базу данных пользователей, он использует предопределенное имя пользователя и пароль в коде. Единственное, что я не могу сделать, это сначала отобразить страницу входа перед index.php . Любой может ввести index.php
, и сайт откроется, поэтому он не использует страницу входа.
Вот мой login.php
<?php
ob_start();
session_start();
?>
<html lang = "en">
<head>
<title>Alpine VW Extension List</title>
<link href = "css/bootstrap.min.css" rel = "stylesheet">
<style>
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #ADABAB;
}
.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
color: #017572;
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
border-color:#017572;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-color:#017572;
}
h2{
text-align: center;
color: #017572;
}
</style>
</head>
<body>
<h2>Welcome, Please Login</h2>
<div class = "container form-signin">
<?php
$msg = '';
if (isset($_POST["login"]) amp;amp; !empty($_POST["username"])
amp;amp; !empty($_POST['password'])) {
if ($_POST["username"] == "admin" amp;amp;
$_POST["password"] == "admin") {
$_SESSION["valid"] = true;
$_SESSION["timeout"] = time();
$_SESSION["username"] = "admin";
header("location:index.php");
}else {
$msg = 'Wrong username or password';
}
}
?>
</div> <!-- /container -->
<div class = "container">
<form class = "form-signin" role = "form"
action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']);
?>" method = "post">
<h4 class = "form-signin-heading"><?php echo $msg; ?></h4>
<input type = "text" class = "form-control"
name = "username" placeholder = "username = tutorialspoint"
required autofocus></br>
<input type = "password" class = "form-control"
name = "password" placeholder = "password = 1234" required>
<button class = "btn btn-lg btn-primary btn-block" type = "submit"
name = "login">Login</button>
</form>
</div>
</body>
</html>
Комментарии:
1. Проверьте логин на странице индекса — если они не вошли в систему, перенаправьте на страницу входа.
Ответ №1:
Вам нужно установить переменную сеанса, что-то вроде того, что вы сделали в приведенном выше коде, в порядке.
$_SESSION["valid"] = true;
Затем на вашем index.php страница вам нужно запустить сеанс и проверить, установлена ли для допустимой переменной сеанса значение true, и если нет, перенаправить обратно на страницу входа в систему
session_start();
if($_SESSION["valid"] != true){
header("location: login.php");
}
Чтобы убрать это из своего комментария, вы просто помещаете это в начало своего index.php файл (очевидно, в PHP-тегах), и он будет проверять каждый раз, когда загружается ваша индексная страница.
Комментарии:
1. Здравствуйте, сэр @twigg спасибо за ответ. Как бы я поместил это в index.php поскольку я все еще учусь, и кто-то помог мне с этой частью.
2. Спасибо, это сработало отлично!! У меня есть еще один вопрос, если бы я мог. моя страница — это список контактов. с кнопками для добавления / удаления контактов. Есть ли способ, которым я могу сделать так, чтобы вам сначала нужно было войти в систему, прежде чем вы сможете добавлять / удалять контакты, но вы можете хотя бы увидеть, какие контакты уже есть.