======หลักการผลิต======
วิธีการคือการเพิ่มข้อมูลของผู้ใช้ลงในฐานข้อมูลเมื่อผู้ใช้เข้าถึงเว็บเพจ ขณะเพิ่ม ให้ตรวจสอบว่ามีบันทึกออนไลน์ของผู้ใช้ในฐานข้อมูลหรือไม่ ดังนั้นให้อัปเดต หากไม่มีบันทึก ให้เพิ่มลงในฐานข้อมูล
และลบบันทึกออนไลน์ที่ไม่มีกิจกรรมภายในเวลาที่กำหนด (นั่นสินะ!)
======การออกแบบตารางข้อมูล========
สร้างตารางข้อมูลใหม่ชื่อ "ออนไลน์"
ลบฟิลด์ตัวเลขอัตโนมัติและสร้างฟิลด์ต่อไปนี้ ชื่อฟิลด์: ประเภท ID: ชื่อฟิลด์ตัวเลข: GUESTNAME ประเภท: ชื่อฟิลด์ข้อความ: STATS ประเภท: ชื่อฟิลด์ข้อความ: VISITIME ประเภท: วันที่/เวลา ชื่อฟิลด์: OUTIME ประเภท: วันที่/เวลา
=======================ส่วนต่อไปนี้ของซอร์สโค้ดมีไว้เพื่อการอ้างอิง หากเขียนไม่ดี โปรดแก้ไขให้ฉันด้วย====== ====== ===========
<%
sub activeonline()
dim ip
'////ลบบันทึกออนไลน์ที่ไม่ได้ใช้งานภายใน 180 วินาที
sql="ลบจากออนไลน์ โดยที่ DATEDIFF('s',outtime,now())>180"
Conn.Execute sql
if stats="" then'//หากค่าของ stat ว่างเปล่า จะแสดงเป็น
stats="ไม่รู้ว่าคุณกำลังทำอะไรอยู่?"
อื่น
สถิติ=สถิติ
end if
IP=replace(Request.ServerVariables("REMOTE_HOST"),".","")'///รับ IP และลบ "." ใน
IP '////ตรวจสอบว่ามีอยู่แล้วใน บันทึก IP ตารางออนไลน์
sql="select id จากออนไลน์โดยที่ id='"&ip&"'"
ตั้งค่า rs=conn.execute(sql)
ถ้า rs.eof หรือ rs.bof แล้ว'////หากไม่มีบันทึก IP ให้เพิ่มบันทึกออนไลน์
sql="insert into online(id,guestname,stats,visitime,outtime ) ค่า ("&ip&",'Guest','"&stats&"',Now(),Now())"
else'////หากบันทึก IP มีอยู่แล้วในตารางออนไลน์ ให้อัปเดตบันทึก
sql="update ชุดออนไลน์ outime =Now(),stats='"&stats&"',guestname='guest' โดยที่ id='"&ip&"'"
สิ้นสุดถ้า
conn.execute(sql)
สิ้นสุดย่อย
-
========================= ตัวอย่าง======================== ====
แก้ไขโค้ดด้านบนและบันทึกเป็น "Online.asp" และฝังไว้ที่ส่วนท้ายของหน้าเว็บแต่ละหน้า
<%
dim conn
คอนทราสสลัว
เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป
connstr="DBQ="+server.mappath("database name.mdb")+";DefaultDir=;DRIVER={ไดรเวอร์ Microsoft Access (*.mdb)};"
ตั้งค่า conn=server.createobject("ADODB.CONNECTION")
conn.open constr
'บันทึกเป็นไฟล์ conn.asp
%>
<!--#รวมไฟล์="conn.asp" -->
<%
dim stats
stats="ดูออนไลน์"
โทร activeonline()
ตั้ง rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT Id,GuestName,Stats,Visitime,Outtime from Online ORDER BY Visittime Desc"
rs.open sql,conn,1,3
รวม=rs.RecordCount
%>
<table border="1" cellpadding="2" cellspacing="0" style="border-collapse:ยุบ" bordercolor="#111111" width="100%" height="53">
<tr>
<td width="20%" height="16" align="center">ชื่อเล่น</td>
<td width="20%" height="16" align="center">การกระทำ</td>
<td width="20%" height="16" align="center">เยี่ยมชม</td>
<td width="20%" height="16" align="center">เหตุการณ์สุดท้าย</td>
</tr>
<%ทำในขณะที่ไม่ใช่ rs.eof%>
<tr>
<td width="20%" height="28" align="center"><%=rs(1)%></td>
<td width="20%" height="28" align="center"><%=rs(2)%></td>
<td width="20%" height="28" align="center"><%=rs(3)%></td>
<td width="20%" height="28" align="center"><%=rs(4)%></td>
</tr>
-
rs.movenext
วนซ้ำ
-
</ตาราง>
จำนวนคนที่ออนไลน์:<%=total%>
-
฿.ปิด
ตั้ง rs=nothing
%><!--#INCLUDE FILE="Online.asp" -->
เขียนไม่ดีก็ไร้สาระ ใครมีวิธีที่ดีกว่านี้ มาเรียนรู้กัน!