推奨:ASPクラスAタグエンジンクラスTagengine.classタグ関数を実装するために使用されるASPクラスは、理解できる場合は特定の機能を理解できます。修正記録:1、拡張機能の追加、2006-12-3% '***************************'クラス名:Tagengine '名:タグエンジン'日付:2006-11-29 '著者:Xilou Lengyue' Webサイト:www.xilou.net | www。
著者は非常に細いので、これらすべてのことをクラスにカプセル化します。少し終わりました。これらのことは、プロセスまたは関数としてカプセル化できます。サブと機能もカプセル化されており、クラスである必要はありません。ファイルライブラリは必ずしもすべてのクラスではなく、一部のサブと機能が必要です。
実装された関数には含まれます
1。ShowInfo(e_title、c_url、e_num、e_des、e_time、opera、ip、reurl):エラーメッセージを表示します
2。GetIP():クライアントIPを取得します
3。CheckPost():オフサイトの提出かどうかを確認します
4。GetReferer():Origin Record
5。GetCururl():現在のページパスを取得します
6、IsRefresh(S1、S2、MAXTIMES):アンチリフレッシュ
完全なコード:
<%
'*******************************
'名前:EventProvider(イベントクラス)
'日付:2006/11/24
'著者:レン・ユエ、Xilou
'ウェブサイト:www.cuoxin.com
'説明:なし
'著作権:転載の情報源を参照してください、著者
'*******************************
'最終修正:2006/11/24
'修正数:0
'変更手順:なし
'現在のバージョン:v1.0.0
'*******************************
クラスEventProvider
プライベートlogdbname 'ログテーブル名
'www.cuoxin.comデザインホーム
'初期化
private sub class_initialize()
logdbname = loginfo
End Sub
'
private sub class_terminate()
End Sub
'事前定義されたイベントのタイトル、またはタイプ
パブリック関数のeventTitles(typepenum)
dim arrytype(9)
arrtype(0)=不明なイベント
arrtype(1)=違法ユーザーログイン
arrtype(2)= urlは違法パラメーターを渡します
arrtype(3)=ログインして、違法文字で渡されます
arrtype(4)=ログイン頻繁に、ログインの数は指定された時間を超えています
arrtype(5)=違法文字を入力するクエリ
arrtype(6)=頻繁なクエリ、クエリ時間の数は指定された時間を超えています
arrtype(7)=ページは頻繁に更新され、リフレッシュの数は指定された時間を超えています
arrtype(8)=オフサイト送信データ
arrtype(9)=バックエンドログイン
is -numeric(typepenum)ではない場合は、eventTitles =不明イベント:出口機能
clng(abs(typenum))> ubound(arrtype)の場合
eventTitles =不明イベント:出口機能
ifを終了します
eventTitles = arrtype(typepenum)
エンド関数
'事前注文配列表示エラー
Public Sub Showarrayinfo(infoitems、infovalues)
薄暗いstr
str = <div style = 'border:2px solid#4e4e9c; font-family:arial; color:#800040; width:50%; font-size:9pt'>
str = str&<ul style = 'マージン:20px;'> <b> aspイベント情報:</b>&vbcrlf
ISARRAY(InfoItems)およびIsArray(InfoValues)の場合
i = lbound(infoitems)からubound(infoitems)の場合
str = str&<li> <b style = 'color:#4e4e9c'>&infoitems(i)&:</b>&infovalues(i)&vbcrlf
次
それ以外
str = str&<li> <b>&infoItems&</b>:&infovalues&vbcrlf
ifを終了します
str = str&</ul> </div>&vbcrlf
Response.write str
End Sub
'エラーを表示します
public sub showinfo(e_title、c_url、e_num、e_des、e_time、opera、ip、reurl)
dim infoitems、infovalues
infoItems = array(イベントタイトル、イベントurl、eventnumber、eventdescription、_
EventTime、オペレーター、IP、参照url_
))
infovalues = array(e_title、c_url、e_num、e_des、e_time、opera、ip、reurl)
showarrayinfo infoitems、infovalues
End Sub
'元のファイルに関する情報を表示します
public sub showoriinfo(oriclass、orifunction、oripage)
dim infoitems、infovalues
infoItems = array(オリジナルクラス、オリジナル機能、オリジナルページ)
infovalues = array(oriclass、orifunction、oripage)
showarrayinfo infoitems、infovalues
End Sub
'IPを取得します
パブリック関数getIp()
DIM IP
'クライアントがプロキシサーバーを使用する場合、serverVariables(http_x_forwarded_for)メソッドを使用する必要があります
ip = request.servervariables(http_x_forwarded_for)
ip =またはisnull(ip)またはisempty(ip)の場合
'クライアントがプロキシを使用しない場合、request.servervariables(remote_addr)メソッドを使用する必要があります
ip = request.servervariables(remote_addr)
ifを終了します
getIP = IP
エンド関数
'オフサイトの提出検証
パブリック関数checkpost()
dim server_v1、server_v2
checkpost = false
server_v1 = cstr(request.servervariables(http_referer))
server_v2 = cstr(request.servervariables(server_name))
mid(server_v1,8、len(server_v2))= server_v2の場合、checkpost = true
エンド関数
'道を手に入れましょう
パブリック関数getReferer()
getReferer = request.servervariables(http_referer)
エンド関数
'ブラウザの現在のURLを取得します
パブリック関数getCururl()
request.servervariables(https)= on
getCurrenturl = https://
それ以外
getCurrenturl = http://
ifを終了します
getCururl = getCururl&request.servervariables(server_name)
if(request.servervariables(server_port)<> 80)then getCururl = getCururl&:&request.servervariables(server_port)
getCururl = getCururl&request.servervariables(url)
if(request.querystring <>)then getCururl = getCururl&? &request.QueryString
エンド関数
'ソースを取得するか、ブラウザの現在のURLを取得し、最初の2つを包括的にします
パブリック関数geturl(t)
t = 1の場合
geturl = getCururl()
それ以外
geturl = getReferer()
ifを終了します
エンド関数
'反復和
'S1:S1秒以上後にアクセスが許可されます
'S2:現在の時刻と最後のアクセス時間がS2秒と異なる場合、頻繁に更新されると見なされます
'maxtimes:頻繁な更新の数がmaxtimes以上である場合、記録します
'頻繁にリフレッシュする場合、isrefresh = true、それ以外の場合は偽です
パブリック関数ISRefresh(S1、S2、Maxtimes)
薄暗いcachename
cachename = eventProvider_2006
isdate(session(cachename&isrefreshtime))の場合、s1秒後に 'accessが許可されます
datediff(s、session(cachename&isrefreshtime)、now())> s1の場合
セッション(cachename&isrefreshtime)= now()
セッション(cachename&isrefresh)= false
ifを終了します
ifを終了します
session(cachename&isrefresh)= trueの場合
isrefresh = true
それ以外
isRefresh = false
ifを終了します
isdate(session(cachename&refreshstart))の場合
datediff(s、session(cachename&refreshstart)、now())<s2 then '//現在の時刻と最後のアクセス時間がS2秒と異なる場合、頻繁に更新されると見なされます
セッション(cachename&refresht)= session(cachename&refresht)+1 '//統計頻繁なリフレッシュの数
セッション(cachename&refresht)> = maxtimes '//周波数更新時間がmaxtimes以上の場合、記録
セッション(cachename&isrefresh)= true
セッション(cachename&isrefreshtime)= now()
ifを終了します
それ以外
セッション(cachename&refresht)= 0 '//頻繁なレコードの数を0に変更します
ifを終了します
ifを終了します
セッション(cachename&refreshstart)= now() '//次の訪問までこの訪問の時間を予約してください
エンド関数
'データベースログに書き込みます
public sub writeTodb(e_title、c_url、e_num、e_des、e_time、opera、ip、reurl、conn)
dim sql
sql = inserting&logdbname&(etitle、eurl、enum、edes、etime、operator、ip、refererurl)値(
sql = sql& '&e_title&'、 '&c_url&'、 '&e_num&'、 '&e_des&'、 '&e_time&'、 '&opera&'、 '&'& '、'&reurl& ')
conn.execute(sql)
End Sub
エンドクラス
%>
共有:ASP+AJAXは、友達を追加するためのリフレッシュを達成しません仕事の関係により、1つの機能の1つは、友人として相手を増やすことです。図に示すように:使用される方法はajaxであり、適切なコードは安価です:href = javascript:void(0); onclick = add_username( '%= rs(username)%'); friend/a、使用されるJS検証を追加します:スクリプト言語= javascript src = ajax。