권장 : ASP 개발에서 유용한 기능 모음 (1) ASP 개발에서 유용한 기능 모음이 매우 유용합니다! 나는 모두가 그것을 유지하기를 바랍니다! % '****************************************************** 'Prevent external submission'*************************************** function ChkPost() dim server_v1,server_v2 chkpost=false server_v1=Cstr(Request.ServerVari
vbscript에는 스크립트 통역사가 런타임 오류를 무시하고 스크립트 코드의 실행을 계속하게하는 ON ERROR 이력서 다음 문이 있습니다. 그런 다음 스크립트는 err.number 속성의 값을 확인하여 오류가 발생했는지 확인할 수 있습니다. 오류가 발생하면 0이 아닌 값이 반환됩니다. ASP 3.0에서는 기본 오류 처리로 돌아 가기 위해 Error Goto 0에 사용될 수도 있습니다. 이러한 종류의 처리는 실제로 ASP 2.0에서 수행되지만 해당 문서 설명은 없습니다.이 설명은 많은 ASP 데이터 관련 처리 파일에서 일반적입니다. 기본 오류 처리를 끄고 ERR를 사용하여 오류를 추가하여 오류 이력서를 추가하십시오.그렇다면
err.clear
응답으로 오류가 발생했습니다.
응답. 엔드
끝 If
보다 자세한 오류 설명을 얻으려면 Asperror 객체를 사용해 보겠습니다. ASP3.0의 새로운 대상입니다. 서버 객체의 getLasterror 메소드 를 통해 얻을 수 있습니다. Asperror는 ASP의 마지막 오류에 대한 자세한 정보를 제공합니다. vbscript의 err 오브젝트와 달리이 메소드는 언제든지 오류가 발생하는지 확인할 수 없습니다. ASP 사용자 정의 오류 웹 페이지에서만 사용할 수 있습니다. ERR 오브젝트 사용과 같이 기본 오류 처리 (ON ERROR 이력서 다음 문을 사용하여)를 끄면 사용하면 getLasterROR 메소드가 오류의 자세한 데이터에 액세스 할 수 없습니다.
Asperror 객체의 속성 :
Asperror 객체는 발생한 오류의 특성과 소스를 나타내는 9 가지 속성을 제공하고 오류를 일으킨 실제 코드를 반환합니다. 속성과 설명은 다음과 같습니다.
아스프 코드 : 정수. 0x800A009와 같은 ASP/IIS에 의해 생성 된 오류 번호
aspdescription : 문자열 유형. 이 오류가 ASP 관련 오류 인 경우이 속성은 오류에 대한 자세한 설명입니다. 예를 들어 : 모든 http : http_accept :*/* http_accept_language : zh-cn http_connection : keep-alive http_host : s http_user_agent : mozilla/4.0 (호환; msie 6.0; Windows nt 5.0; (R1 1.5)) ...
카테고리 : 문자열 유형. 오류의 원인은 ASP 내부 스크립팅 언어 또는 객체의 원인입니다.
열 : 정수. 오류를 생성 한 파일의 문자 위치
설명 : 문자열 유형. 오류에 대한 간단한 설명
파일 : 문자열 유형. 오류가 발생했을 때 처리중인 파일 이름
라인 : 정수. 오류를 생성 한 파일의 줄 번호
번호 : 정수. 표준 COM 오류 코드
출처 : 문자열 유형. 오류를 제기 한 라인의 실제 코드
좋아, 이것들은 9 가지 속성입니다. Asperror 객체 사용의 구문은 다음과 같습니다.
asperror.property
그게 다야 : asperror.aspcode ()
asperror.aspdescription ()
asperror.category ()
asperror.column ()
asperror.description ()
asperror.file ()
asperror.line ()
asperror.number ()
asperror.source ()
IIS가 지원하는 모든 디렉토리 (또는 오류 매핑 속성을 편집하는 디렉토리)의 모든 디렉토리의 모든 페이지에서 ASP 관련 오류가 발생하면 사용자 정의 오류 페이지가로드됩니다. 실제로이 디렉토리의 모든 웹 페이지의 ASP 런타임 오류가 사용자 정의 오류 페이지를 트리거하기 때문에 이제 일반 스크립트 오류 트랩이 설정되었습니다. 오류 웹 페이지는 IIS의 기본 설치 부분이며 개인 상황에 따라 사용자 정의 할 수 있습니다. 예를 들어, 디렉토리에 존재하지 않는 웹 페이지를 입력하면 404 오류가 발생합니다. 404 오류가 발생하면 사용 된 페이지는 404b.htm입니다. 이 파일에는 클라이언트 스크립트 코드 부분이 포함되어 있으며 현재 문서의 URL을 얻고 (문서 개체의 URL 속성에서 검색) 페이지에 표시합니다.
<html dir = ltr>
<헤드>
<스타일> A : 링크 {font : 9pt/11pt 环; 색상 : FF0000} a : 방문 {font : 9pt/11pt 环; 색상 :#4E4E4E}
</스타일>
<메타 이름 = 로봇 내용 = noindex>
<title> 웹 페이지를 찾을 수 없습니다 </title>
<meta http-equiv = content-type content = text-html; charset = gb2312>
<meta name = ms.Locale content = zh-cn>
</head>
<cript>
함수 홈페이지 () {
<!-
// 실제 비트로 URL은 다음과 같이 스크립트로 반환됩니다.
// res : //shdocvw.dll/http_404.htm#http : //www.docurl.com/bar.htm
// 테스트를 위해 DocUrl = res : //shdocvw.dll/http_404.htm#https : //www.microsoft.com/bar.htm
docurl = document.url;
// 이것은 다음과 같이 찾은대로 http 또는 https가있는 곳입니다 : // 그러나 해상도 : //
protocolindex = docurl.indexof (: //, 4);
// 이것은 도메인 서버의 엔드 슬래시를 찾습니다
ServerIndex = docurl.indexof (/, protocolindex + 3);
// HREF의 경우 도메인에 유효한 URL이 필요합니다. 우리는 # 기호를 검색하여 시작을 찾습니다.
// True URL의 및 1을 추가하여 건너 뛰기 - 이것은 시작 값입니다. 우리는 ServerIndex를 엔드 마커로 사용합니다.
//urlresult=docurl.substring(protocolindex -4, serverIndex);
beginurl = docurl.indexof (#, 1) + 1;
urlresult = docurl.substring (starturl, serverIndex);
// 표시하려면 http : // 이후에 건너 뛰고 다음 슬래시로 이동해야합니다.
displayResult = docUrl.SubString (ProtocolIndex + 3, ServerIndex);
insertElementAnchor (urlresult, displayResult);
}
함수 htmlencode (텍스트)
{
return text.replace (/&/g, '& amp'). 교체 (/'/g,' "). 교체 (/g, '& lt;'). 교체 (// g, '& gt;');
}
함수 tagattrib (이름, 값)
{
return ''+name+'='+htmlencode (value)+'';
}
함수 printtag (tagname, needclosetag, attrib, 내부) {
document.write ( '<' + tagname + attrib + '>' + htmlencode (내부));
if (needclosetag) document.write ( '</' + tagname + '>');
}
기능 URI (HREF)
{
iEder = window.navigator.appversion;
IEDER = IEVER.SUBSTR (IEVER.INDEXOF ( 'MSIE') + 5, 3);
return (iever.charat (1) == '.'&& iever> = '5.5')?
Encodeuri (HREF) :
Escape (href) .replace (/%3a/g, ':'). 교체 (/%3b/g, ';');
}
함수 insertElementanchor (href, 텍스트)
{
printtag ( 'a', true, tagattrib ( 'href', uri (href)), 텍스트);
}
//->
</스크립트>
<바디 bgcolor = ffffff>
<테이블 너비 = 410 CellPadding = 3 CellPacing = 5>
<tr>
<td elign = 왼쪽 valign = 중간 너비 = 360>
<h1 스타일 = 색상 : 000000; font : 12pt/15pt songti> <!-문제-> 웹 페이지를 찾을 수 없습니다 </h1>
</td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color : 000000; 글꼴 : 9pt/11pt> 검색중인 웹 페이지는 삭제되었거나 이름이 바뀌거나 일시적으로 사용할 수 없습니다. </font> </td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color : 000000; 글꼴 : 9pt/11pt 노래 글꼴>
<hr color =#c0c0c0 noshade>
<p> 다음을 시도하십시오 : </p>
<ul>
<li> 주소 표시 줄에서 웹 주소를 입력 한 경우 올바르게 철자가 있는지 확인하십시오. <br>
</li>
<li> <li> <cript>
<!-
if (! (!
{
홈페이지 ();
}
//->
</script> 홈페이지, 필요한 정보에 대한 링크를 찾으십시오. </li>
<li> <a href = javaScript : history.back (1)> back </a> 버튼을 클릭하여 다른 링크를 시도하십시오. </li>
</ul>
<h2 style = font : 9pt/11pt songti; 색상 : 000000> HTTP 404- 파일을 찾을 수 없습니다 <br> 인터넷 정보 서비스 <br> </h2>
<hr color =#c0c0c0 noshade>
<p> 기술 정보 (지원 개인) </p>
<ul>
<li> 세부 사항 : <br> <a href = http : //www.microsoft.com/contentredirect.asp? prd = iis & sbp = & pver = 5.0 & pid = & id = 404 & cat = web & os = & hrd = & opt1 = & opt2 = & opt3 = _blank> micros support </a)
</li>
</ul>
</font> </td>
</tr>
</테이블>
</body>
</html>
[/html]
오류가 발생하면 오류와 오류 웹 페이지 파일 간의 매핑 관계가 각 디렉토리의 속성 대화 상자의 사용자 정의 오류 탭에 결정됩니다. 인터넷 서비스 관리자의 속성 설정에 있습니다. 관심이 있으시면 가서 살펴보십시오.
사용자 정의 오류 웹 페이지는 ASPERROR 객체 속성의 모든 값을 표시하고 응답을 사용하여 클라이언트에 HTTP 헤더 상태 메시지를 반환하여 오류가 발생했음을 나타냅니다. 그런 다음 getLasterror 메소드를 사용하여 Asperror 객체에 대한 참조를 얻으므로 오류의 자세한 데이터에 액세스 할 수 있습니다.
…
<%
response.status = 500 내부 서버 오류
set objaspeerror = server.getLasterror ()
%>
현재 페이지 실행 중 : <b> show_error.asp </b> <p>
<b> 오류 세부 사항 : </b> <br>
asperror.aspcode = < % = objaspeerror.aspcode %> <br>
asperror.number = < % = objaspeerror.number %> (0x < % = hex (objaspeerror.number) %>) <br>
asperror.source = < % = server.htmlencode (objasperror.source) %> <br>
asperror.category = < % = objaspeerror.category %> <br>
asperror.file = < % = objaspeerror.file %> <br>
asperror.line = < % = objaspeerror.line %> <br>
asperror.column = < % = objaspeerror.column %> <br>
asperror.description = < % = objaspeerror.description %> <br>
asperror.aspds = < % = objaspeerror.aspds %>
<양식 action = < % = request.servervariables (http_referer) %> method = post>
<입력 유형 = 제출 이름 = CMDOK 값 = 이전 페이지로 돌아 가기>>
<p>
</form> 사용자 정의 오류 페이지에서 스크립트 또는 ASP 오류가 발생하면 IIS는 오류 코드 500 : 100에 해당하는 일반 메시지 만 반환합니다. 스크립트 엔진 자체의 오류 메시지 일 수도 있고 다소 간단한 메시지 일 수 있습니다 : 내부 서버 오류. 사용자 정의 된 오류 페이지가 다시 다시로드되지 않습니다.
잘못된 웹 페이지를 포함하는 모든 환경은 사용자 정의 된 잘못된 웹 페이지로 전달됩니다. 즉, ASP 내부 객체 수집 또는 속성에 저장된 값을 사용할 수 있습니다. 예를 들어, request.servariables 컬렉션에서 http_referer 값을 검색하면 원래 페이지 (예 : 오류가 발생하기 전 페이지)라는 페이지의 URL을 반영합니다. 이 값은 서버가 실행을 잘못된 웹 페이지로 전송할 때 변경되지 않으며 오류가 발생했을 때 실행중인 웹 페이지의 URL이 포함되지 않습니다.
마찬가지로 Script_Name 값은 페이지의 URL이 아닌 오류가 포함 된 페이지 이름입니다. 오류 페이지가로드되면 브라우저 주소 표시 줄에서 URL을 확인하여이를 확인할 수 있습니다. 그러나 원래 웹 페이지의 스크립트 변수에 저장된 값은 사용자 정의 된 잘못된 웹 페이지에서 사용할 수 없습니다.
원래 ASP 웹 페이지가 트랜잭션 내에서 실행중인 경우 웹 페이지 앞쪽에 < % @transaction =… %> 지시문이 있으면 웹 페이지에서 일부 메소드를 가져와 트랜잭션을 종료 해야하는지 여부를 결정해야합니다. 예를 들어 내장 ObjectContext 객체를 사용하여 SetAbort 메소드를 호출 할 수 있습니다.
ObjectContext.setAbort
글쎄, 프론트 엔드 시간은 수천 개의 스팸 이메일을 보냈습니다.
옵션 명시 적
응답 .addheader 상태 코드, 200
응답
다음에 오류가 재개됩니다
응답
희미한 objerror
set objerror = server.getLasterror ()
Dim Objerr, Objmail, Html
set objerr = server.getLasterror ()
set objmail = createobject (cdonts.newmail)
objmail.from = [email protected]
objmail.to = [email protected]
objmail.bodyformat = 0
objmail.mailformat = 0
objmail.subject = Qop 오류 500
html = <font face = 'Verdana, arial, helvetica, sans-serif'> <br>
html = html & <p> 오류는 다음에서 발생했습니다
html = html & <p>에서 참조 : & request.servervariables (http_referer)
html = html & <p> url : & request.servervariables (url)
html = html & <p> <b> 카테고리 : </b> </p> & objerr.category
html = html & <p> <b> filename : </b> </p> & objerr.file
html = html & <p> <b> ASP 코드 : </b> </p> & objerr.aspcode
html = html & <p> <b> 번호 : </b> </p> & objerr.number
html = html & <p> <b> 출처 : </b> </p> & objerr.source
html = html & <p> <b> linenumber : </b> </p> & objerr.line
html = html & <p> <b> 열 : </b> </p> & objerr.column
html = html & <p> <b> 설명 : </b> </p> & objerr.description
html = html & <p> <b> ASP 설명 : </b> </p> & objerr.aspdescription
html = html & <blockquote>
html = html & all http : & request.servervariables (all_http)
html = html & </blockquote> </font>
objmail.body = html
objmail.send
objerr.clear
objmail = 아무것도 설정하지 않습니다
OBJERR = 아무것도 설정하지 않습니다
Response.Write (HTML)
이것은 실제로 운영하기에 성가신 일입니다. Lao Gai 씨가 500-100에서 쓴 것을보십시오.
<%
응답. objasperror.category
objaspeerror.aspcode> 인 경우 response.write, & objaspeerror.aspcode
응답 (0x & hex (objasperror.number) &) & <br>
Response.write <b> & objasperror.description & </b> <br>
objaspeerror.aspds> 인 경우 response.write objaspeerror.aspds & <br>
blnerrorwritten = false
'소스를 사용할 수 있고 요청이 IIS와 동일한 기계에서 나온 경우에만 표시합니다.
objaspeerror.source>라면
strservername = lcase (request.servervariables (server_name))
strserverip = request.servervariables (local_addr)
strremoteip = request.servervariables (remote_addr)
if (strservername = localhost 또는 strserverip = strremoteip) 및 objasperror.file <>? 그 다음에
응답. objasperror.file
objasperror.line> 0 인 경우 response.write, line & objasperror.line
if objaspeerror.column> 0 인 경우 response.write, column & objaspeerror.column
응답 <br>
응답 <font style = color : 000000; 글꼴 : 8pt/11pt Courier New> <b>
response.write server.htmlencode (objasperror.source) & <br>
if objaspeerror.column> 0 인 경우 response.write String ((objaspeerror.column -1), -) & ^<br>
응답 </b> </font>
blnerrorwritten = true
끝 If
끝 If
Blnerrorwritten과 objasperror.file <>가 아닌 경우? 그 다음에
response.write <b> & objasperror.file
objasperror.line> 0 인 경우 response.write, line & objasperror.line
if objaspeerror.column> 0 인 경우 response.write, column & objaspeerror.column
응답 </b> <br>
끝 If
%>
참조는 다음과 같습니다. ASP 3.0 ASPERROR 객체 사용 속성에 관한 ASP 3.0 고급 프로그래밍은 다음과 같은 점이 있습니다.
· 오류가 발생하지 않더라도 숫자 속성에는 항상 값이 있어야합니다. ASP 웹 페이지가 getLasterror 메소드를 호출 할 때 오류가 발생하지 않으면이 속성의 값은 0입니다. 일반적으로 ASP 스크립트의 런타임 오류의 경우 숫자 속성은 16 진수 값 0x800A0000과 표준 스크립트 엔진 오류 코드를 반환합니다. 예를 들어, 이전 예제는이 유형 오류에 대한 vbscript의 오류 코드가 9이기 때문에 범위 오류에 대한 첨자에 대해 0x800a0009의 값을 반환합니다.
· 오류가 통과되면 범주 및 설명 속성에 항상 값이 있습니다.
· APSCODE 속성의 값은 IIS에 의해 생성되며 대부분의 스크립트 오류에 대해 비어 있습니다. 더 많은 경우 외부 구성 요소가 사용될 때 해당 값이 있습니다.
ASPDescription 속성의 값은 현재 사용중인 스크립트 엔진이 아닌 ASP 전처리 업체에 의해 생성되며 대부분의 스크립트 오류에 대해 비어 있습니다. 더 자주, ASP 내장 객체에서 유효하지 않은 메소드를 호출하는 것과 같은 오류에 대한 해당 값이 있습니다.
· 파일, 소스, 라인 및 열 속성은 오류가 발생하고 오류 세부 데이터를 사용할 수있는 경우에만 설정할 수 있습니다. 런타임 오류의 경우 파일 및 라인 속성은 일반적으로 유효하지만 열 속성은 종종 -1을 반환합니다. 오류가 ASP에서 페이지가 처리되는 것을 방지하는 구문 오류 일 때 소스 속성이 반환됩니다. 일반적 으로이 경우 라인 및 열 속성이 유효합니다. 소스 속성의 값을 페이지에 쓰면 불법 HTML 문자가 포함 된 경우 값을 먼저 htmlencode로 전달하는 것이 좋습니다. htmlencode 방법은이 장의 뒷부분에서 자세히 설명합니다.
오류 객체
팁 : 이것은 내가 이것을 두 번째로 썼습니다, nnd. 원래 초점은 Asperror 대상의 도입에있었습니다. 이제 ERR 객체를 소개하겠습니다. 이것은 매우 간단하고 조용하기 쉬운 객체입니다. 가자. ASP 페이지에서.
ERR 객체를 사용하는 경우 인스턴스를 만들 필요가 없으므로 사용하려면 인스턴스를 사용할 수 있습니다. 세션과 마찬가지로 ADODB 객체를 사용할 때와 같은 인스턴스를 만들 필요가 없습니다. set conn = server.createobject (adodb.connection)는 인스턴스를 만드는 데 사용됩니다. 오류 코드를 반환하지만 err! = err.number는 다음 사용을 용이하게하기 위해 명확한 방법으로 지우실 수 있습니다. 주요 방법은 설명 메소드로 간단한 오류 설명을 반환합니다. 다음은 매우 전형적인 예입니다.
< %@ language = vbscript %>
<%response.buffer = true
다음에 오류가 재개됩니다
%>
<%
S = SA
response.write (int (s))
err.number <> 0 인 경우
응답
응답으로 오류가 발생했습니다 .write :%>
<html>
<헤드>
<제목> </title>
</head>
<body>
오류 번호 : < %= err.number %> <br/>
오류 메시지 : < %= err.description %> <br/>
오류 파일 : < %= err.source %> <br/>
오류 줄 : < %= err.line %> <br/>
< %= err %>
</body>
</html>
<%종료 if%>
그것을 실행하고, err.line이 비어 있는가, 왜? ASP의 VB에 작성된 라인 방법은 지원되지 않기 때문에 VB.jscript를 지원하는 폐기물 속성이므로 잡기 위해 공부해야합니다.
ERR 객체를 사용할 때 ERR 객체를 사용하면 오류 이력서에 다음이 추가되어야하며 Asperror 객체를 통과 한 예외가 발생합니다.
데이터베이스를 연결할 때 오류 객체를 사용할 수 있습니다. COUNT 속성 : 오류 수집 수를 계산하는 데 사용됩니다. 항목 메소드 : 특정 오류를 지정하는 데 사용됩니다. 구문은 오류입니다. 숫자는 숫자입니다. 항목은 기본 메소드이므로 오류 (번호)의 쓰기 메소드는 이전 방법과 같습니다. 아래는 프로그램입니다. 오류 개체를 열거하는 데 사용됩니다.
<%
다음에 오류가 재개됩니다
set conn = server.createobject (adodb.connection)
Dim I, Your_databasePath : Your_databasePath = No.Mdb
connstr = provider = microsoft.jet.oledb.4.0; data source = & server.mappath (your_databasepath) &
CONN.OCEN CONNSTR
conn.errors.count <> 0 인 경우
response.write 데이터베이스 <hr/>를 연결하지 못했습니다
i = 0, conn.errors.count-1의 경우
Response.Write Conn.Errors.Item (i) 및 <hr>
response.write err.description
다음
또 다른
응답. 링크 데이터베이스를 성공적으로 작성하십시오
끝 If
conn.close
%>
ERR 객체 사이에는 차이가 없습니다. 비교 결과를 보셨습니까? 너무 추워서 ERR 객체를 직접 사용하기 쉽습니다.
디버깅 중에 Asperror 객체를 사용하는 것이 일반적으로 권장됩니다. 즉, ON Error 이력서가 REM이면 Asperror와 기본적으로 던져집니다. 공식 운영 중에 특별한 요구 사항이없는 한 ERR 개체를 사용하여 무언가를 할 수 있습니다.
공유 : ASP 개발에서 유용한 기능 모음 (2) ASP 개발에서 유용한 기능 모음이 매우 유용합니다. 보관하십시오! '*************************************** 'Filtering hyperlink'********************************* Function checkURL(ByVal ChkStr) Dim str:str=ChkStr str=Trim(str) If IsNull(str) Then chec