#php #authentication #password-protection
#php #аутентификация #защита паролем
Вопрос:
Мне нужна помощь в создании страницы с защитой паролем для работы на моем сайте портфолио. В настоящее время страница защиты паролем позволяет пользователям проходить, даже если они вводят неправильный пароль. Кто-нибудь может помочь? У меня нет предыдущего опыта работы с PHP.
Код ниже. Живой сайт: https://www.starchevsky.com/pwo.php
(следует перенаправить на starchevsky.com/pwo.html )
<?php
$password = "";
if(isset($_POST['submit'])) {
$password = $_POST['password'];
header('location: http://www.starchevsky.com/pwo.html');
if($password != "design6020") {
$error['password'] = "Please re-enter the password.";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="noindex">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Product Designer with 13 years of experience leading projects for clients large and small, including Google, Bank of America, and Chick-fil-A."/>
<title>Tatiana Starchevsky</title>
<link href="https://fonts.googleapis.com/css2?family=Montserratamp;family=Prataamp;display=swap" rel="stylesheet">
<link rel="shortcut icon" href="img/favicon.ico" />
<link rel="stylesheet" href="lib/css/foundation.css" />
<link rel="stylesheet" href="lib/css/style.css" />
<link rel="stylesheet" href="lib/css/app.css" />
<style>
input[type=text] {
border: 2px solid #ccc;
border-radius: 4px;
border-style:solid;
-webkit-appearance: none;
box-shadow: inset 0px 0px 0px 0px red;
}
input[type=button],
input[type=submit] {
background-color: #d50634;
border: none;
color: #fff;
padding: 15px 30px;
text-decoration: none;
margin: 4px 2px;
border-radius: 4px;
cursor: pointer;
}
input:hover[type="submit"]
{
background: #000;
}
</style>
</head>
<body>
<em><?php if($password == "design6020") {
header('location: http://www.starchevsky.com/pwo.html');
?></em>
<!-- PROTECTED INFORMATION GOES HERE -->
<?php } else { ?>
<section id="headernav">
<div class="grid-x">
<div class="cell small-6 name">
<a href="index.html">Tatiana Starchevsky</a>
</div>
<div class="cell small-6">
<ul class="menu align-right">
<li><a ref="index.html">Projects</a></li>
<li><a href="mailto:starchevsky@gmail.com">Contact</a></li>
</ul>
</div>
</div>
</section>
<section>
<div class="grid-x align-center align-middle">
<div class="large-6 small-6 cell">
<br><br><br><br>
<h3>Password Protected</h3>
<br>
<p>At the client's request, this project is password protected.</p>
<small>Please <a href="mailto:starchevsky@gmail.com">email me</a> if you need access.</small>
<br><br>
<?php foreach($error as $errors) {
echo "<p style='color: red;'>".$errors."</p>";
}
?>
<form name="login" action="pwo.php" method="post">
<p>
<input type="text" id="password" class="password" name="password" placeholder="Password" value="<?php if(isset($password)) { echo $password; } ?>"> <input type="submit" name="submit" value="Submit">
</p>
<?php } ?>
</form>
</div>
</section>
<script src="js/vendor/jquery.js"></script>
<script src="js/vendor/what-input.js"></script>
<script src="js/vendor/foundation.js"></script>
<script src="js/app.js"></script>
</body>
</html>
Комментарии:
1. используется
session
для защиты вашей страницы или настройки пароля для этой страницы в панели администратора.2. Независимо от того, что они вводят, пока форма отправлена, вы делаете
header('location: http://www.starchevsky.com/pwo.html');
почему?3. Как я уже упоминал, у меня нет предыдущего опыта работы с PHP, поэтому этот код я нашел в Интернете. Можете ли вы уточнить, как использовать сеанс или что именно нужно обновить с помощью header(‘location: …)?