هناك طريقتان لتنفيذ هذه الوظيفة:
1. طلب
استخدام كائنات التطبيق: إذا كنت تقوم ببناء مجتمع كبير، فقد تحتاج إلى إنشاء تطبيق لكل معرف تسجيل دخول. على الرغم من أن تصميم البرنامج سيكون أبسط، إلا أنه سيكون هناك عدد كبير جدًا من المستخدمين المسجلين وسيستهلك موارد الخادم لا ينصح به هنا لأن كائن التطبيق من السهل إنشاؤه عندما يقوم المستخدم بتسجيل الدخول، ولكن لتحريره بالكامل عندما يقوم المستخدم بتسجيل الخروج من النظام، لم أر طريقة أفضل حتى الآن ~
<%
.....الحصول على اسم المستخدم اسم المستخدم .....
ifApplication(اسم المستخدم)<>ثم
Response.writeتم تسجيل دخول المستخدم بالفعل
Response.end
com.endif
التطبيق (اسم المستخدم) = اسم المستخدم '' يخزن اسم المستخدم الخاص بالمستخدم
%>
قم بإضافة حدث sessiononend إلى الملف العمومي، وApplication(isuserlogin)=false عند عدم الاتصال بالإنترنت
بالإضافة إلى ذلك، من الضروري اكتشاف ما إذا كان مؤشر الترابط معلقًا أم لا. هناك طريقة خاصة وهي عنصر معين في كائن الخادم.
(المرجع: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. قاعدة البيانات + أسب
قد يكون الأمر أكثر تعقيدًا، ولكنه مناسب للأنظمة التي بها عدد كبير من المستخدمين الذين قاموا بتسجيل الدخول.
قم أولاً بإنشاء قاعدة بيانات للمستخدم - استخدم الوصول لإنشاء فقطTOL8.mdb جديد
جدول البيانات 1: يقوم المستخدمون بتخزين معلومات تسجيل المستخدم
تم إعداد جداول البيانات التالية: uID (الرقم التلقائي) اسم المستخدم (نوع الحرف) userPass (نوع الحرف)
جدول البيانات 2: يقوم OnlyLogin بتخزين معلومات تسجيل الدخول المؤقتة للمستخدم
تم إعداد جداول البيانات التالية: OLname (نوع الحرف) OLtime (نوع التاريخ) OLip (نوع الحرف)
بعد إنشاء قاعدة البيانات، أضف البيانات يدويًا إلى جدول المستخدمين، وأضف TOL8 إلى جدول userName، وأضف 111 إلى جدول userPass.
بعد ذلك، قم بإنشاء واجهة تسجيل دخول المستخدم. انسخ التعليمة البرمجية التالية واحفظها في الملف OnlyLogin.asp.
<أتش تي أم أل>
<الرأس>
<meta http-equiv=Content-Type content=text/html;
<title>يمنع تسجيل الدخول إلى نفس الحساب من مناطق مختلفة في نفس الوقت</title>
</الرأس>
<الجسم>
<اسم النموذج=طريقةform1=إجراء النشر=loginPost.asp>
اسم المستخدم: <اسم الإدخال=نوع اسم المستخدم=معرف النص=حجم اسم المستخدم=15 الحد الأقصى للطول=5>
كلمة المرور: <اسم الإدخال=نوع userPass=معرف كلمة المرور=حجم userPass=15 الحد الأقصى للطول=15>
<نوع الإدخال=اسم الإرسال=قيمة الإرسال=تسجيل الدخول>
</النموذج>
</الجسم>
</html>
بعد الانتهاء، قم بإنشاء ملف logINCONN.asp جديد، وانسخ الكود التالي واحفظه للاتصال بقاعدة البيانات.
<%
خافت CONN_TOL8
خافت Conn_T
خافت ممدد
mmdd=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 في ملف تسجيل الدخول CONN.asp
Conn_TOL8.Execute(حذف من فقط تسجيل الدخول حيث 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 * من المستخدمين حيث 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 = لا شيء
نهاية إذا
Sub isOK (اسم المستخدم)
Dim Olip '' IP محفوظ بواسطة اسم مستخدم تسجيل الدخول الحالي في قاعدة البيانات
Dim Oltime '' آخر مرة تم فيها تحديث صفحة الويب عندما يتم حفظ اسم مستخدم تسجيل الدخول الحالي في قاعدة البيانات هي بيانات مهمة لحساب ما إذا كان المستخدم متصلاً أم لا.
Dim OLip1 '' يسجل عنوان IP لتسجيل الدخول للمستخدم الحالي، ويستخدم لتمييز ما إذا كان هو نفس المستخدم.
OLip1=Request.ServerVariables(REMOTE_ADDR)''احصل على IP الخاص بالمستخدم الذي أرسل معلومات تسجيل الدخول
تعيين ts=Conn_TOL8.execute(اختر * من تسجيل الدخول فقط حيث OLname=''& userName & '')
إذا لم يكن ts.eof ثم '' الاستعلام عن قاعدة البيانات لمعرفة ما إذا كان هناك أي معلومات تسجيل دخول لهذا المستخدم
OLtime = نهاية الخبر (OLtime)
OLip=ts(OLip)
إذا كان OLip1<>OLip وDateDiff(s,OLtime,now()) < maxTime إذن
''تحدد الجملة السابقة ما إذا كان عنوان IP الخاص بمستخدم تسجيل الدخول المقدم ليس هو آخر عنوان IP مسجل للمستخدم في قاعدة البيانات و
''إذا كان الفرق بين آخر وقت لنشاط المستخدم والوقت الحالي لا يتجاوز عدد الثواني المحدد، فسيتم التأكد من أن المستخدم متصل بالإنترنت حاليًا.
Response.Write <a href=javascript:history.go(-1)>هذا المستخدم متصل حاليًا. لا يمكنك تسجيل الدخول إلى هذا الحساب من أماكن أخرى! </أ>
الاستجابة. النهاية ()
آخر
'' وإلا سيتم تحديد نجاح تسجيل الدخول وسيتم دفع القيمة للجلسة.
جلسة (lgName) = اسم المستخدم
جلسة (lgPass) = userPass
الاستجابة. إعادة توجيه تسجيل الدخولOK.asp
الاستجابة.النهاية
نهاية إذا
آخر
''إذا لم تكن قاعدة البيانات تحتوي على سجل مستخدم لتسجيل الدخول، فقم بتنفيذ العبارة التالية
خافت ليرة سورية
تعيين ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * من فقط تسجيل الدخول، CONN_TOL8،2،2
إضافة جديد
ls(OLname)=userName
ls(OLip)=OLip1
ليرة سورية (OLtime) = الآن ()
تحديث
ل.إغلاق
تعيين ليرة سورية = لا شيء
''تحديد أن تسجيل الدخول ناجح ودفع القيمة للجلسة
جلسة (lgName) = اسم المستخدم
جلسة (lgPass) = userPass
الاستجابة. إعادة توجيه تسجيل الدخولOK.asp
الاستجابة.النهاية
نهاية إذا
النهاية الفرعية %>
بعد تسجيل الدخول بنجاح، ستنتقل الصفحة إلى تسجيل الدخولOK.asp
<نوع النمط=نص/css>
<!--
الجسم {لون الخلفية: #FF9900؛}
-->
</نمط>
<% IF Session(lgName)<> ثم %>
لقد قمت بتسجيل الدخول بنجاح! ! ! ما يلي هو إطار iframe تم تسلله إلى صفحة الويب لتحديث صفحة الويب في الوقت المحدد وإبلاغ الخادم بما إذا كنت متصلاً بالإنترنت.
ولتسهيل التمييز، نستخدم اللون الأبيض كلون خلفية لصفحة الويب ذات الإطار.
<حدود iframe=0 اسم=new_date هامش العرض=0 تباعد الإطارات=0 ارتفاع الهامش=0 src=loginFrame.asp
frameborder=0 noResize width=100 التمرير=no height=30 vspale=0></iframe>
<% آخر %>
لم تقم بتسجيل الدخول
<% نهاية إذا %>
الشيء التالي الذي يجب فعله هو تسجيل الدخولFrame.asp
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(تحديث مجموعة تسجيل الدخول فقط OLtime=''& NOW() & '' حيث OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>;
عند هذه النقطة، يكون البرنامج قد اكتمل. مفتاح هذا البرنامج هو تحديد ما إذا كان المستخدم متصلاً أم لا.