訪問者を番号付けし、訪問数、IP、時間を記録できる統計作成例
もちろん、私もウェブサイト www.zydn.net を作り、そこにカウンターを置きました。毎日カウンターが回転し続けるのを見て、とても幸せな気持ちになりました。私のウェブサイトですか?彼らは新しい友達ですか、それとも古い友達ですか?何回来たか分からないので、全部に番号を付けたいと思い、無料の統計を申請しましたが、N 回続けて試してみましたが、悲しいことに、それでも満足する方法はないようです。衣食住は自分でやれば十分だ、乾燥しているし、臭いレベルだ、専門家に笑われればいいが、アドバイスは求めない。
例として ACCESS ライブラリを取り上げました。実際、SQL SERVER ライブラリを使用するには、リンク ライブラリのステートメントを変更するだけです。
ライブラリの構造は次のとおりです
ライブラリファイル名:CONT.ASP 元々はCONT.MDBでしたが、ビルド後にライブラリがダウンロードされないよう拡張子をASPに変更しました。
テーブル名: タブ
フィールド名 データ型の説明
ID 来訪者の番号を自動採番
IPテキストは訪問者のIPを記録するために使用されます
dat1 の日付と時刻は、訪問者が最後に訪問した時間を記録するために使用されます。
日付と時刻は、訪問者の最初の訪問時間を記録するために使用されます。
CS 番号、訪問者の訪問数を記録するために使用される整数
プログラムは非常に単純で、ファイルは 2 つだけで、dispcont.asp は統計結果の表示に使用され、contpage.asp は統計情報に使用されます。
まず CONTPAGE.ASP の統計を見てみましょう。コードは次のとおりです。
<%
Conn=Server.CreateObject(ADODB.Connection) を設定します
Connstr=DBQ=+server.mappath(cont.asp)+;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};
Conn.Open connstr '*****上記のステートメントはライブラリに接続するために使用されます。cont.asp はライブラリ ファイル名です。
keren=request.cookies(keren) 'クッキーを読んでください、クッキーの名前は: ケレン、ははは。 。 Ah YuのEは文学臭い人で、ピンインの使い方しか知りません。
if keren= then 'クックが空かどうかを判断します。空の場合は新しい友人である必要があり、そうでない場合は古い友人です。
sql=SELECT * ID=-1 のタブから
set rs=server.createobject(ADODB.Recordset)
rs.Open SQL、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と同じ内容のCookieを書き込みます。
response.cookies(keren).expires=date+365 'Cookie の有効期限を現在から 365 日で設定します。
else '以上は新しい友達との付き合い方です。昔からの友達とはどうすればいいでしょうか?以下をご覧ください:
sql=SELECT * FROM tab where id=&keren 'データベースに行って、古い友人の記録を見つけます
set rs=server.createobject(ADODB.Recordset)
rs.Open SQL、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 '1 年が経過すると認識されなくなるように Cookie の有効期限を設定します。
終了する場合
rs.update '注意すべきことはすべて書き留めたので、ライブラリを更新しましょう。
rs.close 'レコードセット オブジェクトを閉じます。
set conn=nothing ' conn を解放します。接続はいつでも開いたり閉じたりできるようにする必要があると思いますが、SESSION に置くのは最も望ましくないと思います。 4
%>
はい、レコードは完成しました。コードは 20 行以上あります。非常に単純な小さなプログラムですが、巧妙なトリックを持っている友人が Ayu に教えることを忘れないでください。
プログラムを作成したら、ページにどのように配置すればよいでしょうか?非常に簡単です。ホームページ上の場所を見つけて、コード行 <img src=contpage.asp width=0 height=0> を追加するだけです。
次は記録を見せることです。あゆより上手い人はたくさんいますが、それでも自分の醜さを見せたいです。
ファイル名: dispcont.asp、コードを参照してください:
<%
Conn=Server.CreateObject(ADODB.Connection) を設定します
Connstr=DBQ=+server.mappath(cont.asp)+;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};
Conn.Open connstr '*****上記のステートメントはライブラリに接続するために使用されます。cont.asp はライブラリ ファイル名です。
page3=リクエスト(ページ)
if page3= then page3=session(contpag) 'ページ数、現在のページ
ページ 3= の場合、ページ 3=1
pa=リクエスト(pa)
if pa= then pa=session(contpa) 'ページごとの表示数
if pa= then pa=15 ' デフォルトでは、各ページに 15 個の項目が表示されますが、これは任意に変更できます。
セッション(contpag)=ページ3
セッション(contpa)=pa
Pages=pa 'ページごとの表示数*******************上記プログラムはページング機能を実装するために使用されます。
SQL=SELECT * FROM タブ オーダー by -dat,-id
薄暗い
rs=Server.CreateObject(ADODB.RecordSet) を設定します。
rs.SQL、conn、1、1を開く
csi=0
cs1=0
cs100=0
csdat1=0
rs.eof ではないときに実行します
csi=csi+rs(cs)
rs(cs)=1 の場合、cs1=cs1+1
rs(cs)>=100 の場合、cs100+1
if datevalue(rs(dat))=date then
csdat1=csdat1+1
終了する場合
rs.movenext
ループ
ZS=RS.RECORDCOUNT
'************************************************ * ***8ページング表示には以下のプログラムを使用しています。
%>
<頭>
<title>優れたコンピュータ統計</title>
</head>
<body style=font-size: 9pt bgcolor=#D8EDF8>
合計 <%Response.Write zs%> レコードがあり、現在のページは <%Response.Write page3%> です。各ページには [<a href=dispcont.asp?pag=<%=page3%>] が表示されます。 &pa=15>15 ] アイテム、[<a href=dispcont.asp?pag=<%=page3%>&pa=20>20] アイテム、[<a href=dispcont.asp?pag=<%=page3%>&pa=30>30] アイテム、[<a href=dispcont.asp?pag=<%=page3%>&pa=40>40] アイテム
[<a href=dispcont.asp>更新]
<div align=left>
<table border=0 cellpadding=0 style=font-size: 9pt>
<tr><td>ページ番号</td><%page2=1
i=1 から zs ステップ ページの場合
page3=cstr(page2) の場合
%><td >[<%Response.Write page2%>]</td>
<% その他 %>
<td ><a href=dispcont.asp?pag=<%Response.Write page2%>>[<%Response.Write page2%>]</td>
<% 終了の場合
ページ 2=ページ 2+1
次
sn=pages*(page3-1) '現在のレコード番号=1ページあたりの表示数*ページ数-1ページあたりの表示数
sn>zs の場合、sn=0
rs.move sn,1
'************************************上記の段落はページングに使用されます
%> </tr></table>
</div> <table style=font-size: 9pt width=100% bordercolorlight=#000000 border=1 bordercolordark=#FFFFFF bgcolor=#A4D1E8 cellpacing=0 cellpadding=3>
<tr><td>番号</td><td>最後に訪問したホームページ</td><td>最後に訪問した IP</td><td>ホームページの数</td><td>最初の訪問日</td > </tr><%
i=1 からページまで
応答.書き込み </tr>
Response.Write <td>&rs(ID)&</td>
Response.Write <td>&rs(dat)&</td>
Response.Write <td>&rs(IP)&</td>
Response.Write <td>&rs(CS)&</td>
Response.Write <td>&rs(DAT1)& </td>
応答.書き込み </tr>
rs.movenext
if rs.eof then exit
次
rs.close
%>
<tr><td>合計<%=zs%></td><td>訪問数は 100 回を超えています<%=cs100%> </td><td>訪問数は 1 です:< % =cs1%></td><td>合計訪問数<%=csi%></td><td>今日の訪問数: <%=csdat1%></td></tr>
</テーブル>
'******************************** 上記は完全なページ分割表示なので、すべてコピーして使用できます。レコードが 1 つも存在しない場合は考慮されません。