Есть два способа реализовать эту функцию:
1. приложение
Используйте объект приложения: если вы создаете большое сообщество, вам может потребоваться создать приложение для каждого идентификатора входа. Хотя конструкция программы будет проще, вошедших в систему пользователей будет слишком много, и это будет потреблять ресурсы сервера. здесь не рекомендуется, поскольку объект приложения легко сгенерировать, когда пользователь входит в систему, но чтобы полностью освободить его, когда пользователь выходит из системы, я пока не видел лучшего метода ~
<%
.....Получить имя пользователя имя пользователя.....
еслиПриложение(имя пользователя)<>тогда
response.writeПользователь уже вошел в систему
ответ.конец
конец
Application(username)=username'' хранит имя пользователя.
%>
Добавьте событие sessiononend в глобальный файл и укажите Application(isuserlogin)=false в автономном режиме.
Кроме того, необходимо определить, зависает ли поток. Существует специальный метод, представляющий собой определенный элемент объекта сервера.
(Ссылка: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. база данных+asp
Возможно, это будет сложнее сделать, но подойдет для систем с большим количеством залогиненных пользователей.
Сначала создайте базу данных для пользователя — используйте доступ для создания нового onlyTOL8.mdb
Таблица данных 1: пользователи хранят регистрационную информацию пользователя.
Настроены следующие таблицы данных: uID (автоматический номер) userName (тип символа) userPass (тип символа)
Таблица данных 2: onlyLogin хранит информацию о временном входе пользователя.
Настроены следующие таблицы данных: OLname (тип символа) OLtime (тип даты) OLip (тип символа)
После создания базы данных вручную добавьте данные в таблицу пользователей, добавьте TOL8 в таблицу userName и добавьте 111 в таблицу userPass.
Затем создайте интерфейс входа пользователя. Скопируйте следующий код и сохраните его в файл onlyLogin.asp.
<html>
<голова>
<meta http-equiv=Content-Type content=text/html charset=gb2312>
<title>Запрещено одновременно входить в один и тот же аккаунт из разных регионов</title>
</голова>
<тело>
<имя формы=метод form1=post action=loginPost.asp>
Имя пользователя: <input name=userName type=text id=userName size=15 maxlength=5>
Пароль: <входное имя=тип userPass=идентификатор пароля=размер userPass=15 максимальная длина=15>
<тип ввода=имя отправки=Отправить значение=Логин>
</форма>
</тело>
</html>
После завершения создайте новый файл loginCONN.asp, скопируйте следующий код и сохраните его для подключения к базе данных.
<%
Тусклый CONN_TOL8
Тусклый конн_Т
Тусклый ммдд
ммдд=onlyTOL8.mdb
Установите CONN_TOL8 = Server.CreateObject(ADODB.Connection)
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Источник данных= & Server.MapPath(&mmdd&)
при ошибке продолжить дальше
CONN_TOL8.Открыть Conn_T %>
Затем создайте файл loginPost.asp, который также существует в этом каталоге. Это ключ. Внимательно посмотрите на следующий код:
<!--#include file=loginCONN.asp -->
<%
''Удалить пользователей, активных в течение времени maxTime, maxTime определено в файле loginCONN.asp
Conn_TOL8.Execute (Удалить из onlyLogin, где DATEDIFF('s'',OLtime, now()) > & maxTime & )
''============================================ == ==============
Dim rs, ts, txt, sql, имя пользователя, userPass
если Request.Form(Submit)=Войти тогда
userName=Request.Form(userName)'' Получить имя пользователя формы
userPass=Request.Form(userPass)'' Получить пароль для входа в форму пользователя
«Поскольку мы не обсуждаем здесь вопросы безопасности, пароли пользователей не шифруются.
Установите rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM пользователей, где userName = '' & userName & '' и userPass = '' & userPass & ''
rs.Open sql, CONN_TOL8,1,1
ЕСЛИ не rs.eof тогда
Вызов isOK(userName) '' Если имя пользователя и пароль верны, isOK будет настроен в следующей программе.
еще
Response.Write(<a href=javascript:history.go(-1)>Неверное имя пользователя или пароль</a>)
Ответ.Конец()
конец, если
rs.Close
Установить rs=Ничего
конец, если
Sub isOK(имя пользователя)
IP-адрес Dim Olip '', сохраненный под текущим именем пользователя в базе данных
Dim Oltime '' Время последнего обновления веб-страницы, когда текущее имя пользователя для входа сохраняется в базе данных, является важными данными для расчета того, находится ли пользователь в сети.
Dim OLip1 '' записывает IP-адрес входа текущего пользователя, используемый для определения того, является ли это тот же пользователь.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Получите IP-адрес пользователя, который предоставил данные для входа.
Установить ts=Conn_TOL8.execute (выбрать * FROM onlyLogin WHERE OLname=''&userName&'')
если не ts.eof, то '' Запросить базу данных, чтобы узнать, есть ли какая-либо информация для входа в систему для этого пользователя
OLtime=ts(OLtime)
OLip=ts(OLip)
если OLip1<>OLip и DateDiff(s,OLtime,now()) < maxTime, то
''Предыдущее предложение определяет, не является ли отправленный IP-адрес пользователя для входа в систему последним записанным IP-адресом пользователя в базе данных и
''Если разница между временем последней активности пользователя и текущим временем не превышает заданное количество секунд, то подтверждается, что пользователь в данный момент находится онлайн.
Response.Write <a href=javascript:history.go(-1)>Этот пользователь в настоящее время онлайн. Вы не можете войти в эту учетную запись из других мест! </а>
Ответ.Конец()
еще
'' В противном случае определяется, что вход в систему прошел успешно, и сеансу выплачивается значение.
Сеанс (lgName) = имя пользователя
Сеанс (lgPass) = userPass
Response.Redirect loginOK.asp
Ответ.Конец
конец, если
еще
''Если в базе данных нет записи пользователя для входа, выполните следующий оператор
Дим лс
Установите ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * From onlyLogin,CONN_TOL8,2,2
ls.ADDNEW
ls(OLname)=имя пользователя
ls(OLip)=OLip1
лс(OLtime)=СЕЙЧАС()
ls.ОБНОВЛЕНИЕ
ls.Close
Установить ls=Ничего
''Определить успешный вход в систему и оплатить сеанс
Сеанс (lgName) = имя пользователя
Сеанс (lgPass) = userPass
Response.Redirect loginOK.asp
Ответ.Конец
конец, если
Конец подзаголовка %>
После успешного входа страница перейдет на loginOK.asp.
<тип стиля=текст/css>
<!--
body {цвет фона: #FF9900;}
-->
</стиль>
<% IF Session(lgName)<> затем %>
Вы успешно вошли в систему! ! ! Ниже приведен iframe, который проникает на веб-страницу, чтобы обновить веб-страницу в указанное время и сообщить серверу, находитесь ли вы в сети.
Чтобы облегчить различие, мы используем белый цвет в качестве цвета фона веб-страницы фрейма.
<iframe border=0 name=new_date Marginwidth=0 FrameSpacing=0 MarginHeight=0 src=loginFrame.asp
Frameborder=0 noResize width=100 прокрутка=нет высоты=30 vspale=0></iframe>
<% еще %>
Вы не вошли в систему
<% конец, если %>
Следующее, что нужно сделать, это loginFrame.asp.
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(Update onlyLogin Set OLtime=''& NOW() & '' где OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>; url=></head></html>;
На этом работа программы завершена. Ключом к работе этой программы является определение того, находится ли пользователь в сети.