Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 15.04.2002, 11:26
Froggy вне форума Посмотреть профиль Отправить личное сообщение для Froggy Найти все сообщения от Froggy
  № 1  
Froggy
 
Аватар для Froggy

Регистрация: Sep 2001
Адрес: россия, Краснодар
Сообщений: 157
Отправить сообщение для Froggy с помощью ICQ
Question Про авторизацию на сайте...

Привет Великим! Есть вопрос вот какого плана. Я на сайте использую регистрацию и авторизацию, т.е. когда человеку надо скопировать(download) что-то с сайта, допустим некоторые архивы(ничего коммерческого, просто нужно чтобы невозможно было скопировать, если не прорегился). Так вот Я при регистрации создаю куки и при входе на страницу с файлами, которые чел хочет скачать, его проверяют, если нет куки у чела на компе, то его попросят прологиниться, если он не регился ранее его попросят прорегиться. Я при входе на страницу с файлами использую такую проверку:
// Проверка аутентификации пользователя
if (!authenticateUser( $mod_cookie_user, $mod_cookie_passwd)){
// Если пользователь не прошел аутентификацию, то вызов страницы
header("Location:".$bipath."adm/admin.phtml");
}
// Конец проверки аутентификации пользователя


Сама функция authenticateUser имеет такое содержимое:
// Функция аутентификации пользователя
function authenticateUser($user, $password) {
global $DB_SERVER, $HTTP__HOST, $DB_LOGIN, $DB_PASSWORD, $DB, $DOCROOT ;

// Открытие устойчивого соединения с MySQL сервером
if (!($link = mysql_pconnect ($DB_SERVER,$DB_LOGIN, $DB_PASSWORD))) {
// DisplayErrMsg(sprintf("internal error %d:%s\n",
// mysql_errno(), mysql_error()));
// Вывод сообщения об ошибке соединения
DisplayErrMsg(sprintf("внутренняя ошибка %s %s %s %d:%s\n",$DB_SERVER, $DB_LOGIN, $DB_PASSWORD,
mysql_errno(), mysql_error()));
return 0 ;
}

// Проведение аутентификации пользователь/пароль
if (!($result = mysql_db_query("$DB", "select * from user_models where login_user_models='$user' "))) {
DisplayErrMsg(sprintf("внутренняя ошибка %d:%s\n",
mysql_errno(), mysql_error()));
return 0 ;
}
if (($row = mysql_fetch_array($result)) &&
($password == $row["pw_user_models"]
&& $password != "") )
{
return 1 ;
}
else
return 0 ;
}
// Конец описания функции аутентификации пользователя

Логинится чел на странице входа на сайт, и данные двух полей передаются в эту функцию,
Если глянуть на то что возвращает функция то видно что это логика: 1 или 0, а как в ней же сделать передачу всех параметров выбранных по имени и паролю пользователя(если конечно они верны), т.е. все значения полей для которых Я создаю при регистрации куки, а их кроме имени и пароля штук 5-6, да и еще предполагаю 2-3 ввести.
Если что непонятно, то дополню вопрос.
__________________
FROGGY: ничто так не обманчиво, как слишком очевидные факты...

Старый 16.04.2002, 01:26
advocat вне форума Посмотреть профиль Отправить личное сообщение для advocat Посетить домашнюю страницу advocat Найти все сообщения от advocat
  № 2  
advocat
 
Аватар для advocat

Регистрация: Feb 2001
Адрес: Киев
Сообщений: 649
Отправить сообщение для advocat с помощью ICQ
подожди, а непроще ли использовать сесии, напр, сразу идет проверка куков и регится сесия, а потом идет по ней проверка, а туда пихай что угодно ....
__________________
заходите в гости
advocat, это не по професия - это диагноз!
Обычно в PHP обитаю ...

Старый 17.04.2002, 16:14
Froggy вне форума Посмотреть профиль Отправить личное сообщение для Froggy Найти все сообщения от Froggy
  № 3  
Froggy
 
Аватар для Froggy

Регистрация: Sep 2001
Адрес: россия, Краснодар
Сообщений: 157
Отправить сообщение для Froggy с помощью ICQ
Question Вот тут подробнее можно...

Можно подробнее этот вопрос. расписать. Я точно не могу втыкнуться в сессии! не знаю как их прикрутить к Моей теме.
__________________
FROGGY: ничто так не обманчиво, как слишком очевидные факты...

Старый 17.04.2002, 19:25
advocat вне форума Посмотреть профиль Отправить личное сообщение для advocat Посетить домашнюю страницу advocat Найти все сообщения от advocat
  № 4  
advocat
 
Аватар для advocat

Регистрация: Feb 2001
Адрес: Киев
Сообщений: 649
Отправить сообщение для advocat с помощью ICQ
смотри, ты заместь проверки куков регишь сесию, и сессию именно с теми параметрами которые тебе нужно, а потом проверяешь, зарегистрирована ли сессия ...
довольно удобно и работает даже при блокированых куках как у меня обычно ...
__________________
заходите в гости
advocat, это не по професия - это диагноз!
Обычно в PHP обитаю ...

Старый 18.04.2002, 17:10
Froggy вне форума Посмотреть профиль Отправить личное сообщение для Froggy Найти все сообщения от Froggy
  № 5  
Froggy
 
Аватар для Froggy

Регистрация: Sep 2001
Адрес: россия, Краснодар
Сообщений: 157
Отправить сообщение для Froggy с помощью ICQ
По умолчанию А как примерно ...

Набрось примерно кусок кода, который должен быть. А вообще может проще вытащить все необходимые данные из базы при отработке функции авторизации authenticateUser($user, $password), только не true/false передавать, а выбранные из базы соответствующие паролю и имени данные, ну т.е. допустим ФИО, количество сообщений на форуме, его мыло и т.д., а как это реализовать через сессии не знаю. Может Я конечно вообще не догоняю, ну вот такой уж Я, буду благодарен за помощь.
__________________
FROGGY: ничто так не обманчиво, как слишком очевидные факты...

Старый 19.04.2002, 04:08
advocat вне форума Посмотреть профиль Отправить личное сообщение для advocat Посетить домашнюю страницу advocat Найти все сообщения от advocat
  № 6  
advocat
 
Аватар для advocat

Регистрация: Feb 2001
Адрес: Киев
Сообщений: 649
Отправить сообщение для advocat с помощью ICQ
Приведу более ли менее простой пример как делается авторизация с помощью сессий, дальше извращайся как хочешь, а я только приведу пример даже под тебя ... я сеня добрый .... скрипт писать полностью небуду, но приведу самые важные куски кода с разьяснениями ...
Начнем с того что у меня есть некий фаул, назовем его member.php, в нем реализована проверка пользователя и пароля ...
PHP код:
 // в начале файла начинаем сессию (используется 
//для продолжения сессии без ее передачи):
session_start();
// допустим передается в него $user & $passwd
// делаем проверку в базе , лучше всего создать функцию ...
$result = mysql_query("select * from user where user='$user'
 and passwd = password('
$passwd')");
// password('$passwd') - просто у используется спец шифрование ...
  
if (!$result)
    return 
0;
  if (
mysql_num_rows($result)>0)
    return 
1;
  else
    return 
0;
// Если пользователь прошел проверку регистрируем сессию
$valid_user = $user;
session_register("valid_user"); 
Вот у нас есть теперь зарегистрированая сессия valid_user, которая передает только имя юзера !

Далее в нужном тебе файле, где нужно сделать проверку, авторизировался ли пользователь, пишешь примерно следующее :
PHP код:
<?
// проверяем создана ли сессия
if (session_is_registered("valid_user")) {
// вот тебе уже провереный юзвер, теперь что хочешь, то с ним и делай ...
// теперь вернемся к вопросу о даных пользователя ...
// просто делаешь запрос к базе даных и вытаскиваешь нужные тебе даные
// напр:
$res = mysql_query("select * from user where user='[b]$valid_user[/b]'");
$row = mysql_fetch_array($res);
?>Пользователь: <?=$valid_user?> || <?=$row[user]?><br>
количество месаг : <?=$row[message]?><br>
все остальное и тд : <?=$row[other]?><?
// вот фактически и все...
} else {
// если сессия незарегистрирована выведи например:
  
echo "ACCESS DENIED";
}
?>
Вобщем здесь все очень просто ...
Напишу еще сразу примечание :
1. Во всех страницах сначала пропиши session_start(); , не отягощает код, но зато 100% увереность, что пользователь во время путишествия по твоему сайту будет сохранять сессию ...
2. с куками сам решай что делать, просто ты можешь предварительно заганять в куки юзера и пароль и потом проверять их и регить сессию, что-бы пользователь не авторизировался ешо раз
3. сделай кновку выход, тобишь скрипт, который из куков будет убивать даные, и убивать сессию ...
PHP код:
$old_user = $valid_user;  // сохраняем на случай ести пользователь не вошел
$result_unreg = session_unregister("valid_user");
$result_dest = session_destroy(); 
$old_user сделано, на случай неудачного выхода...
Вроде все, будут вопросы, задавай ...
__________________
заходите в гости
advocat, это не по професия - это диагноз!
Обычно в PHP обитаю ...


Последний раз редактировалось advocat; 19.04.2002 в 04:11.
Старый 19.04.2002, 13:23
Froggy вне форума Посмотреть профиль Отправить личное сообщение для Froggy Найти все сообщения от Froggy
  № 7  
Froggy
 
Аватар для Froggy

Регистрация: Sep 2001
Адрес: россия, Краснодар
Сообщений: 157
Отправить сообщение для Froggy с помощью ICQ
По умолчанию Спасибо ПрофиГолове...

Адвокату всех времен и народов - СПАСИБО! Я пока что не пробовал, но суть понял! Сегодня уже пятница, так что не успею на работе начать делать, а домашний комп уже обновил и он только ждет своего друга ЖК-монитор , а так бы дома попробовал. Вот получаю ЗП через неделю, покупаю ЖК-моник , и комп у меня в полном сборе! Извинияюсь за хвастовство, ну перед кем Мне еще похвастать, вот только перед такими же как и Я, только поумнее меня. Спасибо еще раз, если что начну в понедельник на работе так что не расслабляйся, еще наверное потревожу.
__________________
FROGGY: ничто так не обманчиво, как слишком очевидные факты...


Последний раз редактировалось Froggy; 19.04.2002 в 13:29.
Создать новую тему   Часовой пояс GMT +4, время: 00:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.