권장 : ASP Class A 태그 엔진 클래스 Tagengine.class 태그 함수를 구현하는 데 사용되는 ASP 클래스를 이해할 수있는 경우 특정 기능을 이해할 수 있습니다. 수정 레코드 : 1, 확장 기능 추가, 2006-12-3 % '*************************'클래스 이름 : tagengine '이름 : Tag Engine'날짜 : 2006-11-29 '저자 : Xilou Lengyue'웹 사이트 : 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 () : 원점 레코드
5. getCururl () : 현재 페이지 경로를 가져옵니다
6, Isrefresh (S1, S2, Maxtimes) : 반 재생산
완전한 코드 :
<%
'*******************************
'이름 : EventProvider (이벤트 클래스)
'날짜 : 2006/11/24
'저자 : Leng Yue, Xilou
'웹 사이트 : www.cuoxin.com
'설명 : 없음
'저작권 : 저자, 저자 소스를 참조하십시오
'*******************************
'마지막 수정 : 2006/11/24
'수정 수 : 0
'수정 지침 : 없음
'현재 버전 : v1.0.0
'*******************************
클래스 EventProvider
개인 logdbname '로그 테이블 이름
'www.cuoxin.com 디자인 홈
'초기화
private sub class_initialize ()
logdbname = loginfo
종료 서브
'
private sub class_terminate ()
종료 서브
'사전 정의 된 이벤트의 제목 또는 유형
공개 기능 eventitles (typepenum)
Dim Arrtype (9)
ARRTYPE (0) = 알 수없는 이벤트
ARRTYPE (1) = 불법 사용자 로그인
ARRTYPE (2) = URL은 불법 매개 변수를 전달합니다
ARRTYPE (3) = 로그인하고 불법 문자로 전달합니다
arrtype (4) = 로그인 자주 로그인 수가 지정된 시간을 초과합니다.
ARRTYPE (5) = 불법적 인 문자 수신 쿼리
arrtype (6) = 빈번한 쿼리, 쿼리 시간 수가 지정된 시간을 초과합니다.
ARRTYPE (7) = 페이지가 자주 새로 고침되고 새로 고침 수가 지정된 시간을 초과합니다.
ARRTYPE (8) = 오프 사이트 제출 데이터
ARRTYPE (9) = 백엔드 로그인
isnumeric (typepenum)이 아닌 경우 eventtitles = 알 수없는 이벤트 : 종료 함수
clng (abs (typenum))> ubound (arrtype) 인 경우
EventTitles = 알 수없는 이벤트 : 종료 함수
끝 If
EventTitles = ARRTYPE (TypEpenum)
엔드 기능
'사전 주문 배열 디스플레이 오류
공개 showarrayinfo (InfoItems, Infovalues)
Dim Str
str = <div style = '테두리 : 2px 솔리드 #4e4e9c; 글꼴-가족 : arial; color : #800040; 너비 : 50%; 글꼴 크기 : 9pt'>
str = str & <ul style = '마진 : 20px;'> <b> ASP 이벤트 정보 : </b> & vbcrlf
iSarray (infoitems)와 isarray (Infovalues)가 있다면
i = lbound (infoitems) to ubound (infoitems)의 경우
str = str & <li> <b style = '색상 :#4e4e9c'> & infoitems (i) & : </b> & infovalues (i) & vbcrlf
다음
또 다른
str = str & <li> <b> & infoitems & </b> : & infovalues & vbcrlf
끝 If
str = str & </ul> </div> & vbcrlf
응답
종료 서브
'오류 표시
Public Sub ShowInfo (e_title, c_url, e_num, e_des, e_time, opera, ip, reurl)
희미한 정보, 감염
infoitems = array (이벤트 제목, 이벤트 URL, 이벤트 오너, 이벤트 디 스크립 션, _
Eventtime, 운영자, IP, CERETER URL_
))
Infovalues = Array (E_TITLE, C_URL, E_NUM, E_DES, E_TIME, OPERA, IP, Reurl)
showarrayinfo infoitems, 감염
종료 서브
'원본 파일에 대한 정보를 보여줍니다
공개 서브 Showoriinfo (Oriclass, Orifunction, oripage)
희미한 정보, 감염
infoitems = array (원본 클래스, 원본 함수, 원본 페이지)
Infovalues = 어레이 (Oriclass, Orifunction, Oripage)
showarrayinfo infoitems, 감염
종료 서브
'IP를 얻으십시오
공개 기능 getip ()
희미한 IP
'클라이언트가 프록시 서버를 사용하는 경우 ServerVariables (http_x_forwarded_for) 메소드를 사용해야합니다.
ip = request.servervariables (http_x_forwarded_for)
IP = 또는 ISNULL (IP) 또는 ISEMPTY (IP) 인 경우
'클라이언트가 프록시를 사용하지 않으면 request.servervaribles (remote_addr) 메소드를 사용해야합니다.
ip = request.servervariables (remote_addr)
끝 If
getip = ip
엔드 기능
'오프 사이트 제출 검증
공개 기능 checkpost ()
Dim Server_v1, Server_v2
체크 포스트 = 거짓
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.servariables (http_referer)
엔드 기능
'브라우저의 현재 URL을 얻으십시오
공개 기능 getCururl ()
request.servervariables (https) = if if on on on one
getCurrentUrl = https : //
또 다른
getCurrentUrl = http : //
끝 If
getCururl = getCururl & request.servervariables (server_name)
if (request.servervariables (server_port) <> 80) 그런 다음 getCururl = getCururl & : & request.servervariables (server_port)
getCururl = getCururl & request.servervariables (URL)
if (request.querystring <>) 그런 다음 getCururl = getCururl &? & request.querystring
엔드 기능
'소스를 얻거나 브라우저의 현재 URL을 얻고 처음 두 개를 결합하십시오.
공개 기능 geturl (t)
T = 1이면
geturl = getcururl ()
또 다른
geturl = getReferer ()
끝 If
엔드 기능
'안티 리프레 쉬
'S1 : 액세스는 S1 초 이상 후에 허용됩니다
'S2 : 현재 시간과 마지막 액세스 시간이 S2 초와 다른 경우 자주 새로 고침되는 것으로 간주됩니다.
'maxtimes : 빈번한 새로 고침의 수가 maxtimes와 같거나 더 큰 경우, 기록
'자주 상쾌한 경우 isrefresh = true, 그렇지 않으면 거짓입니다
공개 기능 isrefresh (S1, S2, Maxtimes)
희미한 캐시 이름
Cachename = EventProvider_2006
ISDATE (세션 (Cachename & IsRefreshTime)) 인 경우 S1 초 후에 ACCESS가 허용됩니다
Datediff (s, session (Cachename & isrefreshtime), now ())> S1 인 경우
세션 (Cachename & isrefreshtime) = now ()
세션 (Cachename & Isrefresh) = false
끝 If
끝 If
IF SESSION (CACHENAME & ISREFRESH) = true
isrefresh = true
또 다른
isrefresh = false
끝 If
if isdate (Session (Cachename & CroseshStart))
datediff (s, session (cachename & refreshstart), now ()) <s2 인 경우 '// 현재 시간과 마지막 액세스 시간이 S2 초와 다르면 자주 새로 고침되는 것으로 간주됩니다.
세션 (Cachename & Refresht) = 세션 (Cachename & Refresht) +1 '// 자주 새로 고침의 수를 통계합니다
SESSION (CACHENAME & RESHRENCT)> = MAXTIMES IF IF '// 주파수 새로 고침 시간이 MAXTimes보다 동일하다면 레코드
세션 (Cachename & Isrefresh) = true
세션 (Cachename & isrefreshtime) = now ()
끝 If
또 다른
세션 (Cachename & Refresht) = 0 '// 그렇지 않은 경우 빈번한 레코드 수를 0으로 변경합니다.
끝 If
끝 If
세션 (Cachename & RomformStart) = now () '// 다음 방문 까지이 방문 시간을 예약하십시오.
엔드 기능
'데이터베이스 로그에 쓰십시오
Public Sub WriteTodb (E_TITLE, C_URL, E_NUM, E_DES, E_TIME, OPERA, IP, Reurl, CONN)
희미한 SQL
SQL = & logdbname & (Etitle, Eurl, Enum, Edes, Etime, Operator, IP, CepererUrl)에 삽입
sql = sql & '& e_title &', '& c_url &', '& e_num &', '& e_des &', '& e_time &', '& opera &', '& ip &', '& reurl &').
Conn.Execute (SQL)
종료 서브
수업 종료
%>
공유 : ASP+Ajax는 친구를 추가 할 수있는 새로 고침을 달성하지 않습니다 업무 관계로 인해 기능 중 하나는 다른 당사자를 친구로 늘리는 것입니다. 그림과 같이 : 사용 된 방법은 Ajax이고 적절한 코드는 저렴합니다. href = javaScript : void (0); onclick = add_username ( ' %= rs (username) %'); friend/a, 사용 된 JS 확인 : 스크립트 언어 = javaScript src = ajax.