И снова аутентификация

  • Автор темы Anclaud
  • Дата начала

Anclaud

Guest
И снова аутентификация

Здравствуйте уважаемые!
После многочасового поиска, чтения форума и ненайдя нужного ответа решил создать новую тему и задать вопрос!
У меня такой вопрос!

Авторизую пользователя на сайте! использую сессию.
Открываю другое окно браузера. ввожу тот же пароль и имя и вхожу в свой аккаунт.
Как мне запретить одновременный доступ под одним логином?

Сначало пробовал создать дополнительный столбец в базе данных и при входе писал 1 а при выходе возвращал значение в 0, но возникает проблема при закрытие браузера или отключения модема. В базе данных остаеться 1 и при следующем заходе выходит сообщение что пользователь уже зашел под таким именем!

Что посаветуете???
 

rotoZOOM

ACM maniac
100% никак нельзя определить сидит пользователь с таким логином в онлайне или нет.
Записывайте в БД время последней активности юзера.
А во время регистрации проверяейте на таймаут.
Например если юзер с таким логином уже минут 20 ничего не делает, то он считается дохлым.
Правда есть некоторые нюансы. Во время связи у юзера перегрузилась тачка. И войти теперь он не сможет 20 минут. :))
 

ForJest

- свежая кровь
Просто поступай как поступает ICQ или к примеру MSN - кто последний авторизовался, тот и пользователь.
 

Anclaud

Guest
Ладно сделаю кто послений зашел тот и хозяин, а как при этом отрубить предыдущего. Этот способ есть на игре Бойцовский клуб. Как в другом окне активизируешься то в предыдущем вылетаешь на первую страницу.
Только вот как это реализовать??
 

Кром

Новичок
>Только вот как это реализовать??

Известно как, очистить куку, которая за авторизацию отвечает.
 

Anclaud

Guest
Я вот что придумал! Как идея??
При авторизации в БД записываем SID пользователя и при каждом запросе на любой вызываемой странице проверять являеться ли SID именно этого пользовател иначе выход

Авторизовался
$sql="update user set s='$SID' where name='$login'";
mysql_query($sql);

$sql="select *from user where status='$SID' and name='$login'";
$result= mysql_query($sql);
$row = mysql_fetch_row($result);

if($row[3]==$sid)
{
echo "<meta http-equiv=refresh content=\"0 URL=куда надо.php\">";

}
else
{
echo "<meta http-equiv=refresh content=\"0 URL=выход.php\">";
}

Ну типа что то такого и вместо SID можно генерить случайное число $vxod=rand(1,10000);
и записывать все в переменную
$_session()
B сравнивать со значением с базой.
Так как страниц на сайте планируеться не больше 30 штук думаю хороший способ.
Ну как???

-~{}~ 07.02.05 22:38:

И еще вот такое. Если в браузере при нажатие правой кнопки мыши а нажать открыть в номом окне то все переменные передаються и тогда этот способ не действует. Поможет при таком способе элементарный запрет правой кнопки мышки на JAVA скрипте???
 

Кром

Новичок
>Поможет при таком способе элементарный запрет правой кнопки мышки на JAVA скрипте???

Совершенно безумная идея.
 

Anclaud

Guest
Почему безумная??? Мне просто надо, что бы из браузера не могли открыть новое окно с той же сессией!!
А как проверять кто хозяин я уже написал выше и думаю так потянет? Или есть какие то боле умные и сложные предложения???
 

Денч

Новичок
Почему безумная
Ты наверно, не представляешь, как это бесит пользователей, когда их лишают некоторых удобств, например, запрещают контекстное меню, пишут фигню в статусе...;)

-~{}~ 08.02.05 00:18:

Да и потом, на фига это надо? Ведь пользователь захочет открыть другой раздел сайта. И что, ты ему это запретишь?
 

Anclaud

Guest
Ладно раз бесит пользователей Что вы можете посаветовать, что бы из окна браузера нельзя было открыть другое окно или в меню нажать открыть в номом окне???
И Вы так и не прокаментировали идею на счет того чтобы узнавать кто главный пользователь...
 

Anclaud

Guest
Денч

При открытие нового окна все данные вместе с SID передадуться
А мне надо что бы Пользователь в своем аккаунте мог находиться только в одном окне браузера.
 

Денч

Новичок
Кстати, Фанат тебе уже рекомендовал контролировать ip.
Вводишь в свой метод узнавания главного пользователя функцию определения ip, с которого пытаются залогинится под именем, которое уже залогинилось, сравниваешь ip, и если они разные, делай выход

-~{}~ 08.02.05 00:42:

маленько запоздало:
мог находиться только в одном окне браузера.
вот тебе что нужно... попробу вариант с ip.

-~{}~ 08.02.05 00:43:

хотя не поможет...
 

Anclaud

Guest
Денч
Ну хоть по IP хоть как, я сам уже придумал несколько способов но суть не в этом. Главно что бы пользователь не мог находиться на сайте на определенных страницах после авторизации одновременно в разных окнах браузера.

Следовательно надо запретить открытие по ссылки из одного браузера в другой. Также запретить нажатие Ctrl+N и
Shift + Кнопка мышки

А вопрос!
Как мне запретить одновременный доступ под одним логином?

Снимаеться с обсуждения
 

Денч

Новичок
Манипулировать броузером пользователя не есть гуд.

А если сильно надо, то тебе наверно, сюда с такими вопросами
 

ForJest

- свежая кровь
Фанат
Выключите пожалуйста автоответчик :)
Давать эту ссылку на слова ICQ и MSN не нужно.
 
Сверху