AASP는 CGI 스크립팅 프로그램을 대체하기 위해 Microsoft가 개발 한 응용 프로그램입니다. 데이터베이스 및 기타 프로그램과 상호 작용할 수 있습니다. 편집자는 그에게 간단한 토론을 할 것입니다. 다음 내용은 주로 ASP 작성 코드의 필수 원칙에 대해 이야기합니다.
1. vbscript 변수를 선언합니다
ASP에서 vbscript에는 강력한 지원이 제공되며 VBScript 함수 및 메소드를 완벽하게 통합하여 ASP의 기존 기능을 확장하는 데 큰 편의를 제공합니다. ASP에서 가변 유형의 개념이 흐려 졌기 때문에 많은 프로그래머는 ASP와 VBScript 간의 상호 작용 중에 VBScript 변수를 선언하지 않아 서버의 구문 분석 부담을 증가시켜 서버의 응답 요청 속도에 영향을 미칩니다.
이를 고려하여 사용자가 VB에서 변수 선언을 수행하도록 강요하는 것처럼 사용자가 VBScript에서 변수 선언을 수행하도록 강요 할 수 있습니다. 구현 방법은 ASP 프로그램 라인의 시작 부분에 <% 옵션 명시 적%>를 배치하는 것입니다.
2. URL 주소를 인코딩합니다
ASP를 사용하여 매개 변수와 점프가있는 URL 주소를 동적으로 생성 할 때 IE에서 구문 분석하는 것이 정상이지만 NetScrape를 탐색 할 때 다음과 같이 오류가 있습니다.
HTTP 오류 400 400 잘못된 요청 잘못된 구문으로 인해 서버에서 요청을 이해할 수 없습니다. 클라이언트는 수정없이 요청을 반복해서는 안됩니다.
솔루션은 생성 된 URL 매개 변수를 인코딩하는 URL에 ASP 내장 서버 객체의 URLENCODE 메소드를 사용하는 것입니다. 예제는 다음과 같습니다.
<% url = "xur.asp"var1 = "username ="& server.urlencode ( "xur") var2 = "& company ="& server.urlencode ( "xurstudio") var3 = "& phone ="& server.urlencode ( "021-53854336-186") 응답. & var1 & var2 & var3 %>
3. 개체를 지우십시오
객체를 사용한 후 먼저 가까운 방법을 사용하여 객체가 차지하는 시스템 리소스를 자유롭게합니다. 그런 다음 객체 값을 "아무것도"로 설정하여 객체의 메모리를 제거하십시오. 당시에는 명확한 개체가없는 페이지에 100 개가 넘는 레코드 세트를 만들어 IIS를 추락했습니다. 다음 코드는 데이터베이스 컨텐츠를 사용하여 드롭 다운 목록을 만듭니다. 코드 예제는 다음과 같습니다.
<% mydsn = "dsn = xur; uid = xur; pwd = xur"mysql = "mysql ="select * set au_id <100 "set kendemp = server.createobject ("adodb.connection ") conntemp.open mydsn set rstemp = conntemp.execute (mysql) rstemp.write"dataBase " Response.write mysql conntemp.close set conntemp = nothing response.end end if %> < %rstemp.eof %> < %rstemp.movenext loop rstemp.close set rstemp = nothing conntemp.close set conntemp = nothing % %>4. 문자열을 사용하여 SQL 쿼리를 만듭니다
문자열을 사용하여 쿼리를 설정한다고해서 서버의 구문 분석 속도가 빨라지지는 않습니다. 반대로, 서버의 구문 분석 시간도 증가합니다. 그러나 여전히 간단한 쿼리 명령문 대신 문자열을 사용하여 쿼리를 사용하는 것이 좋습니다. 이것의 장점은 프로그램의 문제를 빠르게 발견하여 프로그램을 촉진하고 효율적으로 생성 할 수 있다는 것입니다. 예는 다음과 같습니다.
< %mysql = ""select * "mysql = mysql &"출판사에서 "mysql = mysql &"where state = 'ny' "response.write mysql set rstemp = conntemp.execute (mysql) rstemp.close set rstemp = nothing % %>
5. 사용 케이스. 조건을 선택하십시오
조건부 선택을 할 때는 사례 진술을 사용하고 IF 문을 사용하지 마십시오. 사례 문을 사용하면 프로그램을 유동성으로 만들고 IF 문보다 더 빨리 실행할 수 있습니다. 예는 다음과 같습니다.
i = 1 ~ 1000 n = i 응답의 <%addsuffix (n) & "<br>"<br> "next%> <%함수 addsuffix (num) numpart = right (num, 1) case numpart case"1 "inf inst (num = num = n num = n num = n num = n num = n num &"n the ") 종료 인 경우 "3"인 경우 (num, "13"), num = num & "th"else num = num & "rd"end "4"num = num & "th"case else num = num & "th"end select addsuffix = num end function % %>
6. adovbs.inc 파일에 정의 된 상수를 사용하여 레코드 세트를 엽니 다.
레코드 세트를 열 때 레코드 세트가 열리는 커서 유형 및 잠금 유형을 정의 할 수 있습니다.
이러한 유형을 정의하기 위해 Adovbs.inc 파일에 정의 된 상수가 있습니다. adovbs.inc 파일은/inetpub/iissamples/iisamples 디렉토리에 저장됩니다. 다음은 일반적으로 사용되는 커서 유형과 잠금 유형입니다.
커서 유형 :
잠금 유형 :
<!-#포함 virtual = "/adovbs.inc"-> <% connectme = "dsn = xur; uid = xur; pwd = xur"sqltemp = "select * from name = 'xur'"set rstemp = rest.createobject ( "adodb.record") rstempenstic. sqltemp, connectme, adcordstatic, contectme response.write rstemp.recordCount & "<br>"& sqltemp rstemp.close set rstemp = nothing % %>의 레코드
7. Global.asa 파일의 객체 정의를 피하십시오
Global.asa 파일의 내용은 사이트의 모든 파일에서 참조 할 수 있으므로 의심 할 여지없이 Global.asa 파일의 객체를 정의하면 많은 복제를 저장할 수 있습니다.
예를 들어, Global.asa의 application_onstart 함수에서 다음과 같은 정의가 이루어집니다.
< %sub application_onstart set application ( "theconn") = server.createobject ( "adodb.connection") end sub %>;
이를 통해 사이트의 모든 코드에서 유사한 참조를 할 수 있습니다.
< % mysql = "select * state = 'xur'set rstemp = application ("theconn "). execute (mysql) %>마찬가지로, 레코드 세트 객체는 세션 _onstart 함수에서 생성 할 수 있습니다.
< %sub session_onstart set session ( "rstemp") = server.createobject ( "adodb.recordset") end sub %>
그런 다음 사이트에서 다음과 같은 인용문이 있습니다.
< % mysql = "select * state = 'xur'set session ("rstemp ") = conntemp.execute (mysql) %>그러나 이렇게하면 부정적인 영향도 큰 영향을 미칩니다. 애플리케이션 및 세션 변수는 웹 사이트를 닫을 때 점유 리소스 만 릴리스하므로 세션 매개 변수는 많은 불필요한 메모리를 낭비하며 이때 응용 프로그램 변수는 서버 성능의 병목 현상이됩니다.
해결책:
객체를 정의하기 위해 ASP 페이지를 만들고이 객체를 호출 해야하는 페이지 에이 ASP 페이지를 소개하십시오. 정의 된 객체의 ASP 페이지 이름이 정의되었다고 가정하면 다음 문을 해당 ASP 페이지에 추가하여 페이지를 소개 할 수 있습니다.
<!-#포함 virtual = "/define.asp"->
페이지를 소개 할 때 ASP 파일에 <%@language = "vbscript"%> 문을 포함시키지 않는 것이 가장 좋습니다. ASP 파일에는 @에 의해 정의 된 언어를 구문 분석하는 스크립트가 하나만있을 수 있습니다.
8. 안전 보호
ASP는 우수한 코드 보호 메커니즘을 제공하며 모든 ASP 코드는 서버 측에서 실행되며 클라이언트 코드 실행 결과 만 리턴합니다. 그럼에도 불구하고 IIS의 기존 버전에서는 파일 이름 :: $ data 다음에 ASP의 소스 코드를 볼 수 있으며, 이는 이미 웹 서버 보안 범위에 속하며이 기사의 범위 내에 있지 않습니다. 다음은 두 가지 간단한 안전 예방 조치입니다.
INC ASP가 확장자로 파일을 도입하는 것이 좋습니다. 여기에 ASP를 확장자로 사용하여 여기에 파일을 소개하는 것이 좋습니다. 이러한 코드가 보안 메커니즘이 열악한 웹 서버에서 실행되면 주소 표시 줄을 입력하여 가져온 파일의 내용을 탐색 할 수 있습니다 (Inc는 확장자). 웹 서버에서 특정 유형 (예 : INC)을 해결하는 동적 연결 라이브러리가 정의되지 않으면 파일이 소스 코드에 표시되기 때문입니다.
악의적 인 사람이 데이터베이스 경로를 얻을 때 데이터베이스 파일을 웹 사이트 구조 내에 넣지 말고 데이터베이스를 쉽게 얻은 다음 데이터베이스 내용을 임의로 변경할 수 있습니다. 더 나은 접근 방식은 데이터베이스에 대한 DSN (날짜 소스 이름)을 설정하고 데이터베이스에 액세스 할 때 직접 DSN에 액세스하는 것입니다.
이 기사를 통해 ASP 인코딩에 대한 이해가 있습니까? 그것이 당신을 도울 수 있기를 바랍니다.