PHP доступ к странице по паролю

Samail
На сайте с 10.05.2007
Offline
366
1683

Как разрешить доступ к странице только по паролю? Есть ли что-то наподобие HTTP-аутентификации, только без логина и что-бы для разных страниц разные пароли требовались (заранее установленные)?

S
На сайте с 13.10.2014
Offline
171
#1

на самом деле нет никаких сложностей. Храните в базе пароли для каждой страницы (или создаете их по какому-нибудь закону) потом просто проверяете есть-ли права на доступ у человека Х. если есть - показываете содержимое страницы, нет - показываете форму

Данные по доступу лучше привязывать к сессии(для анонимусов) или пользователю и хранить в базе, а в куках держать идентификатор, бо есть параноики отключающие пирожки, и куки имеют ограниченный объем.

ну и ночью по крону гонять лангольера, который будет уничтожать данные доступа для анонимусов (если такая возможность будет присутствовать)

Samail
На сайте с 10.05.2007
Offline
366
#2
silicoid:
потом просто проверяете есть-ли права на доступ у человека Х.

Доступ должен быть у тех кто ввел правильный пароль, независимо от того авторизован он на сайте или нет.

S
На сайте с 13.10.2014
Offline
171
#3

Samail, Ну это уже зависит от вашей политики доступа. )))

Можно хоть по картинки доступ давать. Загрузил правильную картинку - есть доступ. нет -- нет доступа ))

S
На сайте с 30.09.2016
Offline
469
#4

Дык токен же ж.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 13.10.2014
Offline
171
#5

При посещении вы можете "пометить" каждого посетителя, выдав ему определенный ID.

Если это авторизованыый пользователь - ID держите в базе. если неавторизованый - посупаете несколько сложнее.

пытаетесь записать id через LSO (их сложно найти и удалить). если не получается - через куки, если не получается - просите зарегистрироваться/авторизоваться

вот и все. теперь человека тоже посчитали. Остается только привязать на его ID информацию о то, на какие страницы он уже заходил (чтоб по 100 раз пароли не спрашивать)

профит.

1. заходит человек

2. вы получаете id-шник

3. если доступ для этого id-шника есть - показываете страницу - нет. показываете форму ввода пароля

4. если пароль правильный, сохраняете разрешение в базе и показываете страницу. нет - показываете еще раз (ну можно еще придумать ограничение, например 5 раз ввел не так, блокируется на 300 секунд. но это уже вопрос технический)

Samail
На сайте с 10.05.2007
Offline
366
#6
silicoid:
1. заходит человек
2. вы получаете id-шник

Как я его получу? Мне нужно что-бы страница требовала от посетителя только пароль и всё.

---------- Добавлено 25.02.2017 в 06:52 ----------

Если покромсать HTTP-аутентификацию то будет примерно то, что нужно:


$valid_passwords = array ($content->id => $content->pass);
$valid_users = array_keys($valid_passwords);

$_SERVER['PHP_AUTH_USER']=$content->id;
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];

if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}

Логином будет ID страницы и подставляться он будет автоматически. Как теперь скрыть в форме само поле для ввода логина?

SS
На сайте с 15.12.2015
Offline
83
#7

Пропишите пароль в скрипте и проверяйте, что вводит пользователь.

Ввел верно - на контент.

Не верно - держи форму ввода.

🍿

Размещение естественных ссылок на тематических порталах, отзовиках, справочниках (/ru/forum/1013919)
M
На сайте с 04.12.2013
Offline
223
#8
Samail:
Как теперь скрыть в форме само поле для ввода логина?

В браузерной форме? 🤪

Сделайте обычную авторизацию на куках. Какие проблемы?

---------- Добавлено 25.02.2017 в 11:38 ----------

Для авторизованных пользователей можете просто выставлять какой-нить флаг, когда они однократно введут пароль.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
Samail
На сайте с 10.05.2007
Offline
366
#9
miketomlin:
В браузерной форме?

Ну вдруг есть какие-то команды для браузера соответствующие.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий