ตัวอย่างการผลิตทางสถิติที่สามารถนับจำนวนผู้เยี่ยมชมและบันทึกจำนวนการเข้าชม, IP และเวลา เพื่อนๆ ที่ต้องการข้อมูลดังกล่าวสามารถอ้างอิงได้
ฉันสร้างเว็บไซต์และแน่นอน เช่นเดียวกับคนอื่นๆ ฉันยังอ่านเคาน์เตอร์อยู่ทุกวัน ซึ่งทำให้ฉันมีความสุขมาก แต่แล้วฉันก็คิดว่าใครในโลกนี้ที่เห็นเว็บไซต์ของฉันบ้าง เพื่อนหรือเพื่อนเก่า? ไม่รู้ว่ามากี่ครั้งแล้ว แต่ยังอยากนับให้หมด เลยสมัครขอสถิติฟรี แต่เปลี่ยน N ติดต่อกันแล้วยังไม่พอใจเลย ดูเหมือนเป็นวิธีเดียวเท่านั้น มีอาหารและเสื้อผ้าให้เพียงพอก็แค่ทำเอง ฉันยังหวังว่าผู้เชี่ยวชาญจะหัวเราะเยาะและไม่ขอคำแนะนำ
ฉันใช้ไลบรารี ACCESS เป็นตัวอย่าง ที่จริงแล้วหากต้องการใช้ไลบรารี SQL SERVER คุณจะต้องเปลี่ยนคำสั่งของไลบรารีลิงก์เท่านั้น
โครงสร้างห้องสมุดมีดังนี้
ชื่อไฟล์ไลบรารี: CONT.ASP เดิมทีคือ CONT.MDB แต่หลังจากสร้างขึ้นแล้ว ส่วนขยายก็เปลี่ยนไปเป็น ASP เพื่อป้องกันไม่ให้ดาวน์โหลดไลบรารี
ชื่อตาราง: แท็บ
คำอธิบายประเภทข้อมูลชื่อฟิลด์
ID กำหนดหมายเลขผู้เยี่ยมชมโดยอัตโนมัติ
ข้อความ IP ใช้เพื่อบันทึก IP ของผู้เข้าชม
วันที่และเวลา dat1 ใช้เพื่อบันทึกครั้งสุดท้ายที่ผู้เยี่ยมชมเยี่ยมชม
วันที่และเวลาที่ใช้ในการบันทึกเวลาที่ผู้เยี่ยมชมครั้งแรก
หมายเลข CS เป็นจำนวนเต็มที่ใช้บันทึกจำนวนการเข้าชมของผู้เยี่ยมชม
โปรแกรมนี้เรียบง่ายมาก โดยมีเพียงสองไฟล์เท่านั้น dispcont.asp ใช้เพื่อแสดงผลทางสถิติ และ contpage.asp ใช้สำหรับข้อมูลทางสถิติ
มาดูสถิติของ CONTPAGE.ASP กันก่อน โดยมีโค้ดดังนี้:
- <%SetConn=Server.CreateObject(ADODB.การเชื่อมต่อ)
- Connstr=DBQ=+server.mappath(cont.asp)+;DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};
- Conn.Openconnstr'***** คำสั่งข้างต้นใช้เพื่อเชื่อมต่อกับไลบรารี และ cont.asp เป็นชื่อไฟล์ไลบรารี
- keren=request.cookies(keren)'อ่านคุกกี้แล้ว ชื่อคุกกี้คือ keren 555 - E ของ Ah Yu เป็นคำในวรรณกรรมที่ไม่ดี และเขารู้วิธีใช้พินอินเท่านั้น
- ifkeren=then' กำหนดว่า cookes ว่างเปล่าหรือไม่ ถ้าว่างเปล่า จะต้องเป็นเพื่อนใหม่ ไม่เช่นนั้นจะเป็นเพื่อนเก่า
- sql=SELECT*FROMแท็บอยู่ที่ไหน=-1
- setrs=server.createobject (ADODB.Recordset)
- rs.Opensql,conn,1,3
- rs.addnew'หากเป็นผู้เยี่ยมชมใหม่ ให้เพิ่มบันทึกใหม่ในห้องสมุด
- rs(cs)=1'บันทึกจำนวนการเข้าชมเป็น 1
- rs(ip)=request.servervariables(remote_addr)' จดบันทึก IP
- rs(dat)=now'จำวันที่และเวลาปัจจุบัน
- rs(dat1)=date'จำวันที่ปัจจุบันและใช้เป็นวันที่เข้าชมครั้งแรกในอนาคต
- response.cookies(keren)=rs(id)'เขียนคุกกี้ เนื้อหาเหมือนกับ ID
- response.cookies(keren).expires=date+365'กำหนดวันที่ใช้งานได้ของคุกกี้โดยเริ่มจากตอนนี้ 365 วัน
- อย่างอื่นข้างต้นคือวิธีจัดการกับเพื่อนใหม่ เราควรทำอย่างไรกับเพื่อนเก่า? ดูด้านล่าง:
- sql=SELECT*FROMtabwhereid=&keren'Go ไปที่ห้องสมุดเพื่อค้นหาบันทึกของเพื่อนเก่าของเรา
- setrs=server.createobject (ADODB.Recordset)
- rs.Opensql,conn,1,3
- rs(cs)=rs(cs)+1'โอเค เจอแล้ว เพิ่ม 1 ให้กับจำนวนการเข้าชม
- rs(ip)=request.servervariables(remote_addr)'ดูว่า IP ของเขาคืออะไรและจดบันทึกไว้
- rs(dat)=now'จำเวลาปัจจุบันซึ่งเป็นเวลาที่เข้าชมครั้งล่าสุด
- response.cookies(keren)=rs(id)' แล้วเขียนคุกกี้ลงไป ฉันไม่รู้ว่าประโยคนี้ซ้ำซ้อนหรือเปล่า ฉันยังไม่ได้ลองเลย
- response.cookies(keren).expires=date+365'ตั้งเวลาหมดอายุของคุกกี้เพื่อที่ฉันจะไม่จดจำมันหลังจากผ่านไปหนึ่งปี
- สิ้นสุด
- rs.update' ฉันได้จดทุกอย่างที่ควรจดไว้แล้ว มาอัปเดตไลบรารีกันดีกว่า
- rs.close'ปิดวัตถุชุดระเบียน
- setconn=nothing' เผยแพร่ conn ฉันยังคงคิดว่าควรเปิดและปิดการเชื่อมต่อเมื่อใดก็ได้ ฉันคิดว่ามันไม่พึงปรารถนาที่สุดที่จะใส่ไว้ใน SESSION 4%〉
โอเค บันทึกเสร็จแล้ว มีโค้ดมากกว่า 20 บรรทัด และเป็นโปรแกรมขนาดเล็กที่เรียบง่ายมาก
หลังจากเขียนโปรแกรมแล้ว จะวางมันลงบนเพจได้อย่างไร ง่ายมาก เพียงหาตำแหน่งบนหน้าแรกแล้วเพิ่มโค้ดบรรทัดนี้: <img src=contpage.asp width=0 height=0>
ขั้นต่อไปคือโชว์สถิติมีคนเก่งกว่าอายูอีกเยอะแต่ก็ยังอยากอวดความอัปลักษณ์ของตัวเอง
ชื่อไฟล์: dispcont.asp โปรดดูโค้ด:
- -
- SetConn=Server.CreateObject(ADODB.การเชื่อมต่อ)
- Connstr=DBQ=+server.mappath(cont.asp)+;DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};
- Conn.Openconnstr'***** คำสั่งข้างต้นใช้เพื่อเชื่อมต่อกับไลบรารี และ cont.asp เป็นชื่อไฟล์ไลบรารี
- page3=คำขอ(เพจ)
- ifpage3=thenpage3=session(contpag)'จำนวนหน้า, หน้าปัจจุบัน
- ifpage3=แล้วpage3=1
- pa=คำขอ(pa)
- ifpa=thenpa=session(contpa)'จำนวนการแสดงผลต่อหน้า
- ifpa=thenpa=15' แสดงรายการ 15 รายการต่อหน้าตามค่าเริ่มต้น ซึ่งสามารถเปลี่ยนแปลงได้ตามใจชอบ
- เซสชั่น(contpag)=page3
- เซสชั่น(contpa)=pa
- Pages=pa'Display number per page****************** โปรแกรมด้านบนนี้ใช้เพื่อใช้ฟังก์ชันเพจจิ้ง
- SQL=SELECT*FROMtaborderby-dat,-id
- หรี่แสง
- Setrs=Server.CreateObject(ADODB.RecordSet)
- rs.Opensql,conn,1,1
- ซีเอสไอ=0
- ซีเอส1=0
- ซีเอส100=0
- csdat1=0
- do Whilenotrs.eof
- csi=csi+rs(cs)
- ifrs(cs)=1แล้วcs1=cs1+1
- ifrs(cs)〉=100แล้วcs100+1
- ifdatevalue(rs(dat))=datethen
- csdat1=csdat1+1
- สิ้นสุด
- rs.movenext
- วนซ้ำ
- ZS=RS.RECORDCOUNT
- '************************************************ * ***8โปรแกรมต่อไปนี้ใช้สำหรับการแสดงเพจ
- -
- <ศีรษะ>
- 〈ชื่อ〉สถิติคอมพิวเตอร์ที่ยอดเยี่ยม〈/ชื่อ〉
- </ศีรษะ>
- 〈bodystyle=font-size:9ptbgcolor=#D8EDF8〉
- มีระเบียน 〈%Response.Writezs%〉 ทั้งหมด หน้าปัจจุบันคือ 〈%Response.Writepage3%〉 แต่ละหน้าจะแสดง: [〈ahref=dispcont.asp?pag=〈%=page3%〉&pa=15〉15 ], [<ahref=dispcont. asp?pag=〈%=page3%〉&pa=20〉20] รายการ, [〈ahref=dispcont.asp?pag=〈%=page3%〉&pa=30〉30] รายการ, [〈ahref=dispcont.asp? pag=〈%=page3%〉&pa=40〉40]
- [〈ahref=dispcont.asp〉รีเฟรช]
- 〈divalign=ซ้าย〉
- 〈tableborder=0cellpadding=0style=font-size:9pt〉
- 〈tr〉〈td〉หมายเลขหน้า〈/td〉〈%page2=1
- fori=1tozsหน้าขั้นตอน
- ifpage3=cstr(page2)แล้ว
- %〉〈td〉[〈%Response.Writepage2%〉]〈/td〉
- <%อื่น%>
- 〈td〉〈ahref=dispcont.asp?pag=〈%Response.Writepage2%〉〉[〈%Response.Writepage2%〉]〈/td〉
- <%endif
- หน้า2=หน้า2+1
- ต่อไป
- sn=pages*(page3-1)'หมายเลขบันทึกปัจจุบัน=จำนวนที่แสดงต่อหน้า*จำนวนหน้า-จำนวนที่แสดงต่อหน้า
- ถ้าsn〉zsthensn=0
- rs.movesn,1
- '************************************ ย่อหน้าข้างต้นใช้สำหรับเพจ
- %〉〈/tr〉〈/ตาราง〉
- 〈/div〉〈tablestyle=font-size:9ptwidth=100%bordercolorlight=#000000border=1bordercolordark=#FFFFFFbgcolor=#A4D1E8cellspacing=0cellpadding=3〉
- 〈tr〉〈td〉Number〈/td〉〈td〉หน้าแรกที่เข้าชมล่าสุด〈/td〉〈td〉IP เข้าชมล่าสุด〈/td〉〈td〉จำนวนหน้าแรก〈/td〉〈td〉วันที่เข้าชมครั้งแรก〈/td 〉 〈/tr〉〈%
- fori=1หน้ายอดนิยม
- ตอบกลับเขียน〈/tr〉
- การตอบสนองเขียน〈td〉&rs(ID)&〈/td〉
- Response.เขียน〈td〉&rs(dat)&〈/td〉
- การตอบสนองเขียน〈td〉&rs(IP)&〈/td〉
- Response.เขียน〈td〉&rs(CS)&〈/td〉
- การตอบสนองเขียน〈td〉&rs(DAT1)&〈/td〉
- ตอบกลับเขียน〈/tr〉
- rs.movenext
- ifrs.eofthenexitfor
- ต่อไป
- RS.ปิด
- -
- 〈tr〉〈td〉Total〈%=zs%〉〈/td〉〈td〉มีผู้ที่เคยเยี่ยมชมมากกว่า 100 ครั้ง〈%=cs100%〉〈/td〉〈td〉มีผู้ที่เคยเยี่ยมชม 1 : 〈%=cs1%〉〈/td〉〈td〉จำนวนการเข้าชมทั้งหมด 〈%=csi%〉〈/td〉〈td〉การเข้าชมวันนี้: 〈%=csdat1%〉〈/td〉〈/tr〉
- </โต๊ะ>
ข้างต้นเป็นการแสดงเพจแบบสมบูรณ์ที่สามารถคัดลอกและใช้งานได้ (หมายเหตุ: จะไม่พิจารณาสถานการณ์ที่ไม่มีบันทึก) ดังคำกล่าวที่ว่าทำด้วยตัวเองเท่านั้นที่คุณจะมีอาหารและเสื้อผ้าเพียงพอ ดังนั้นรีบหน่อย ลองดูสิ!