Есть страница, на которой будут перечислены контакты для организации и нужно защитить паролем всё это, не имея учетной записей у пользователей. Только один пароль, который периодически меняется и распространяется в группе.
access.php
<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';
session_start();
if (!isset($_SESSION['loggedIn'])) {
$_SESSION['loggedIn'] = false;
}
if (isset($_POST['password'])) {
if (sha1($_POST['password']) == $password) {
$_SESSION['loggedIn'] = true;
} else {
die ('Incorrect password');
}
}
if (!$_SESSION['loggedIn']): ?>
<form method="post">
Password: <input type="password" name="password"> <br />
Login: <input type="submit" name="submit" value="Login">
</form>
<?php
exit();
endif;
?>
Затем в каждый файл, который требует защиты пропишите:
require('access.php');
// secret text
Это не очень безопасное решение, также вы можете добавить страницу logout.php, например:
session_start();
$_SESSION['loggedIn'] = false;
// You have logged out
Есть страница login.php
, которая принимает пароль, а затем устанавливает файл cookie, если данные для входа правильные. Каждый файл php может затем проверить наличие файла cookie, чтобы определить, является ли пользователь logged in
или нет, и соответственно отобразить информацию.
login.php
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
setcookie('loggedin', 'false', time() - 1200, '/url/');
// display a login form here
}
// etc
Затем каждая страница protected
будет проверять наличие этого файла cookie:
if(isset($_COOKIE['loggedin'])) {
if($_COOKIE['loggedin'] == 'true') {
$showHidden = true;
} else {
$showHidden = false;
}
} else {
$showHidden = false;
}
Идея рабочая, но не совсем надежная...
$hash = password_hash('your_password', PASSWORD_DEFAULT);
if (password_verify('your_password', $hash)) {
// hash is valid
}