PHP система двойного входа - PullRequest
1 голос
/ 07 декабря 2010

У меня вопрос по системам входа в PHP.Возможно ли иметь систему входа в систему в другой системе входа.

Вот пример: я захожу на сайт, и PHP создает сеанс.Затем я хочу получить доступ к другой странице с более защищенным содержимым, поэтому я прошу пользователя повторно ввести свое имя пользователя / пароль, чтобы получить доступ к этой странице.

Можно ли это сделать, используя разные сеансы или один и тот же сеанс?было бы здорово, если бы исходный сеанс не закончился, поэтому, как только пользователь заканчивает на странице с более защищенным контентом, он может продолжать использовать предыдущие страницы.

Надеюсь, что это имеет смысл, любая информация, которая могла бынаправьте меня в правильном направлении, будет принята с благодарностью!

Ответы [ 5 ]

3 голосов
/ 07 декабря 2010

Конечно, это возможно. Просто сохраните, какую аутентификацию пользователь уже выполнил.

Как:

$_SESSION['auth_type'] = 'first one'; // when user logged in first time
$_SESSION['auth_type'] = 'more secured one'; // when user logged in second time time

После этого вы можете проверить, какой тип аутентификации был у пользователя:

if ($_SESSION['auth_type'] == 'first one') {
    // ask for second auth here
}

Etc ...

1 голос
/ 07 декабря 2010

Это можно сделать, используя тот же сеанс.

Просто сделайте что-то подобное, как только они войдут во вторую область.

$_SESSION['secondArea'] = TRUE;

Вы можете unset(), когда они войдут в системуиз второй области.

0 голосов
/ 07 декабря 2010

Если вы хотите защитить его еще больше, я бы рекомендовал использовать MD5 для сессии.

$_SESSION['userAuth'] = 'here-md5-hash';

зашифровать MD5 и сохранить его (только для имени пользователя), а затем сохранить.Таким образом, ваш сервер знает расшифровку.

Это очень затрудняет перехват.

0 голосов
/ 07 декабря 2010

Вы можете использовать один и тот же сеанс, идентифицируемый тем же cookie на его стороне.Но просто установите и проверьте разные переменные сеанса для представления различных статусов входа: $_SESSION['hasUserAccess'] и $_SESSION['hasAdminAccess'].

Или, возможно: $_SESSION['accessStatus'], которые могут иметь значения, такие как 'public', 'user', 'admin'.

0 голосов
/ 07 декабря 2010

Если вы хотите, чтобы ваш пользователь снова входил в систему каждый раз, когда просматривает содержимое, вы можете использовать форму входа POST, а затем перед отображением данных на странице проверить имя пользователя POSTed.и пароль перед отображением содержимого.

например (в псевдокоде)

if request is a POST and username and password are valid:
    display content
else:
    display login form
...