#php #login
#php #аутентификация
Вопрос:
я использую следующий код пароля http://www.zubrag.com/scripts/password-protect.php
он работает нормально, но когда я пытаюсь отобразить информацию зарегистрированного пользователя, я могу сделать это только один раз, во время входа в систему. после этого, если я обновлю страницу, страница по-прежнему будет доступна, но имя зарегистрированного пользователя не будет отображено. может кто-нибудь помочь мне с этим у меня есть следующий код в первой строке страниц, которые я хочу защитить
<?php require("/home/abcd/abcd/password_protect.php"); ?>
я повторяю имя, используя
echo "Welcome $login";
Комментарии:
1. сохраните его в $_session, посмотрите в примере evolt.org/node/60265
2. Этот скрипт, который вы загрузили, ошибочен во многих отношениях. Я предлагаю вам начать изучать другие механизмы входа в систему. Начните с тех, которые не хранят имя пользователя и / или пароль (будь то хэшированный, даже если соленый) в файле cookie, затем посмотрите на те, которые не используют GET для выхода из системы, будьте осторожны с теми, которые выводят информацию о пути, забудьте о хранении паролей открытым текстом и непозвольте им очистить переменные POST, чтобы другие сценарии, которые вы не используете, не зависали и не записывались. О, и особенно не доверяйте скриптам, которые перебирают всех ваших пользователей, чтобы выяснить, кто пытается войти в систему.
Ответ №1:
В основном скрипт выполняет то, что у него есть предварительно инициализированный список логинов и паролей, хранящихся в массиве $LOGIN_INFORMATION
.
$LOGIN_INFORMATION = array(
'zubrag' => 'root',
'test' => 'testpass',
'admin' => 'passwd'
);
Теперь он принимает комбинацию логин / пароль от пользователя и соответствует сохраненным значениям.
Согласно вашему вопросу, вы хотите показать имя аутентифицированного пользователя.
Для этого вы можете использовать сеанс
В начале страницы (в самой первой строке) напишите
`session_start();`
затем
$_SESSION['username'] = $username
//имя пользователя, прошедшего проверку подлинности
Теперь в начале каждой страницы, где вы хотите напечатать имя, напишите
session_start();
затем
echo $_SESSION['username'];
После того, как вы закончите и захотите выйти из системы (или отменить сеанс), напишите
session_unregister('username');
Ответ №2:
Этот скрипт сохраняет хэш имени пользователя и пароля в файл cookie с именем verify
:
setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
Таким образом, вы не можете извлечь файл $login
напрямую, однако вы можете перебирать возможности, $LOGIN_INFORMATION
пока не найдете его:
$login = null;
$found = false;
foreach($LOGIN_INFORMATION as $key=>$val) {
$lp = (USE_USERNAME ? $key : '') .'%'.$val;
if ($_COOKIE['verify'] == md5($lp)) {
$found = true;
$login = $key;
}
}
Комментарии:
1. привет, Бенджи Гиллам. Спасибо за ответ. должен ли я изменить существующий скрипт на приведенный выше или добавить что-то на страницы, на которые я включаю файл password_protect
2. Простое добавление приведенного выше кода на ваши страницы должно сработать, но вы могли бы сделать это проще, отредактировав скрипт, просто добавьте
$login = $key;
after$found=true;
в исходныйpassword_protect.php
файл.
Ответ №3:
в начале каждой страницы:
session_start();
при успешной аутентификации пользователя:
$_SESSION['keyname'] = 'value';
везде, где вам нужно получить к нему доступ:
echo $_SESSION['keyname']