<%


'//GetRows 메소드는 Recordset 개체에서 데이타를 배열로 가져오는 역활을 한다.


 strConnect="DSN=test;UID=sa;PWD=;"

 set dbcon = server.CreateObject("ADODB.Connection")
 dbcon.open strConnect


 SQL = "select 필드명1, 필드명2 from 테이블명"
 set rs = dbcon.Execute(SQL)


 With Rs
 fields = Array("memuid","name") '// 2차원 배열로 값을 저장한다.
 data = .GetRows( , ,fields)


'//GetRows([Rows],[Start],[Fields])
'//인자는 생략가능하다
'//첫번째 인자는 가져올 레코드수를 지정한다 생략하면 전부다 가져온다.
'//두번째 인자는 어느레코드에서 가져올지를 정한다.
'//세번째 인자는 배열에 들어간 Field 값을 가져온다.


 .close
 end With
 set rs = nothing
 dbcon.close
 set dbcon = nothing


 Rcount = ubound(data,2)

 '//UBound([배열명]] 배열의 요소 갯수를 알려주는 함수

%>


 <table width = "100%" border="1">
 <% for i=0 to Rcount%>
 <tr>
  <td><%=Rcount-i+1%></td>
  <td><%=data(0,i)%></td>
  <td><%=data(1,i)%></td>
 </tr>
 <%next%>
 </table>

2008/02/21 15:45 2008/02/21 15:45

혹시나 모르시는 분 있을까봐 간단하게 예제 작성해봤습니다.

On Error Resume Next 구문은 에러가 발생해도 에러부분을 무시하고 넘기라는 명령문이며

에러발생시의 처리 루틴이 빠져있다면 화면에 아무런 에러메시지도 출력안하게 됩니다. 그럼 일단 개발자는

아래와 같은 소스에서는 DB연결 에러를 파악할수가 없게 됩니다. 쓰시게 될때는 에러처리 부분과 꼭 함께

쓰시거나 아니면 안 쓰시는게 좋습니다. 주석은 비교적 짧게 달았으나 한번 실행해 보시면 금방 감 오실겁니다


--------------------------------------- 예제는 여기서부터 -------------------------------------------------------------


<%


    'On Error Resume Next 구문은 에러가 발생해도 일단 에러부분을 무시하고 넘기게 됩니다.
    On Error Resume next
 
    Dim strConnect, dbCon, rs
    strConnect="DSN=test;uid=sa;pwd=1234;"

  
    SET dbCon=server.CreateObject("ADODB.Connection")
    dbCon.Open strConnect
 
    SET rs = dbCon.execute("select uid, name, addr from TestTable where uid ='"& uid &"'")


    'Error 발생했을때 처리하게 되는 루틴입니다.
    if Err.Number <> 0 then
    response.Write "<h2>DB연결에 실패하였습니다.</h2>"
    Err.Clear
    response.end
    else
    rs.Close
    Set rs = nothing
    dbCon.Close
    Set dbCon = nothing
    response.Write "<h2>DB연결에 성공하였습니다.</h2>"
    end if


%>

2008/02/21 15:45 2008/02/21 15:45

쿠키 유형에는 메모리 쿠키와 디스크기반 쿠키가 있습니다. 디스크기반 쿠키는 우리가
일반적으로 생각하는 클라이언트의 디스크에 저장되는 쿠키이며 메모리 기반 쿠키는
브라우져가 종료될때까지만 유효한 쿠키입니다.
아래 예제는 메모리기반 쿠키입니다. 디스크기반 쿠키로 사용하실려면 Expires 속성을 이용하여
다음과 같이 명시해야 합니다.
Response.Cookies("TestCookie").expires = #12/31/2010 00:00:00#

아래 예제에서는 expires 부분을 ' <-- 주석으로 막아놨습니다.


쿠키의 또 한가지 알아야 할 특성은 로드밸런싱(load balancing)을 이용하거나 이용하신분들은 아시겠지만

도메인에 종속적이라는 것입니다. 도메인명이 다르면 다른 도메인으로 디스크기반 쿠키를 사용할수가 없습

니다. 그래서 도메인명이 다른 두개의 사이트의 회원로그인 정보를 공유하자는 논의는 양사 개발담당자

의 머리를 썩게 만드는 주요한 요인이 됩니다


※ 두대이상의 웹서버를 이용한 로드밸런싱에서는 별도의 세션서버를 두지 않는이상 세션정보를 쿠키에

저장하여 처리하는 것이 일반적입니다. 기회가 된다면 로드밸런싱 하에서 로그인처리와 파일업로드 부분

에 대해서 언급할 계획입니다.


-------------------------------------예제는 여기서부터 ------------------------------------------------------------



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>쿠키예제</TITLE>
</HEAD>
<BODY>
<%

'Response.Cookies("TestCookie").expires = #12/31/2010 00:00:00#


'Response.Cookies를 사용하면 쿠키에 정보를 추가합니다.
 Response.Cookies ("TestCookie")="쿠키예제"

'Request.Cookies를 사용하여 쿠키의 정보를 읽어들입니다.
 Response.Write Request.Cookies("TestCookie")


 Response.Write "<br><br>"

'쿠키에 키를 사용하면 하나의 쿠키에 여러 정보를 저장할수 있습니다.
 Response.Cookies ("TestCookie")("Key1")="쿠키"
 Response.Cookies ("TestCookie")("Key2")="예제"
 Response.Cookies ("TestCookie")("Key3")="입니다"

'키가 사용된 쿠키의 값을 참조하기 위해서 키값을 사용합니다.
 Response.Write Request.Cookies("TestCookie")("Key1")
 Response.Write Request.Cookies("TestCookie")("Key2")
 Response.Write Request.Cookies("TestCookie")("Key3")


%>
</BODY>
</HTML>

2008/02/21 15:45 2008/02/21 15:45

여기 없는 것 같아서 퍼왔읍니다.


아래글은 트랙백의 기본개념보다는 windows + asp 환경에서의 기술적 구현을 위해 간단하게 작성된 소스입니다. 따라서 트랙백의 기본개념을 이해하신후 소스를 보시는것이 도움이 되실것입니다.또한 보다 확장적인 서비스를 위해서는 아래 소스외에 더 많은 부분을 추가하셔야 합니다.


1. 트랙백 핑 받기

 

<%


'변수 처리
bidx = Request("bidx")
strTitle = Request("title")
strExcerpt = Request("excerpt")
strURL = Request("url")


'콘텐츠 타입
Response.ContentType = "text/xml"


'변수 확인
If strURL="" or strTitle = "" or bidx = "" Then
 Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
 Response.Write "<response>"
 Response.Write "<error>1</error>"
 Response.Write "<message>Not Enough Arguments.</message>"
 Response.Write "</response>"
 Response.End
End If


'내 블로그에 글이 있는지 확인
If 해당글의수 = 0 Then
 Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
 Response.Write "<response>"
 Response.Write "<error>1</error>"
 Response.Write "<message>Not Exist Post.</message>"
 Response.Write "</response>"
 Response.End
End If


set rs = Server.CreateObject("ADODB.Recordset")
with rs
.Open trackback_table,접근문자열,adOpenStatic,adLockPessimistic,adCmdTable
.addnew
.fields ("글번호 필드명") = opt_insert_text (bidx)
.fields ("주소 필드명") = opt_insert_text (strURL)
.fields ("제목 필드명") = opt_insert_text (strTitle)
.fields ("내용 필드명") = opt_insert_text (strExcerpt)
.fields ("날짜") = now
.update

.close
end with

set rs = nothing


'정상적으로 완료되었으면 성공했다는 대답을 보내자.
Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
Response.Write "<response>"
Response.Write "<error>0</error>"
Response.Write "<message>TrackBack Success.</message>"
Response.Write "</response>"
%>


첫번째로 트랙백은 규정적으로 4개의 변수값을 전송합니다. 글제목(title),글주소(url),글내용(exerpt),블로그명(blog_name) 입니다. 여기서 필수요소는 url 입니다. 위 소스에서는 블로그명을 포함시키지 않았습니다. 그리고 글번호는 해당 글의 존재유무를 확인하기 위해 트랙백 주소에서 GET 형태로 받아옵니다.


두번째로 인코딩되는 xml 중 <error> 부분이 가장 중요합니다. 즉, error 값으로 트랙백 핑을 보낸쪽에다 대답을 하는 것입니다.0이면 성공이고 1이면 실패입니다. 그리고 <message>부분은 말그대로 추가설명입니다. 그리고 트랙백 핑은 POST 형태로 값을 받습니다. 받아오는 변수들을 Request.Form 형태로 정의해주는것이 더 좋을듯 하네요.

세번째로 위 소스에서는 간단한 xml 이라 굳이 Msxml2.DOMDocument 같은 xml 관련 서버 컴포넌트를 사용하지 않았습니다.


2. 트랙백 핑 보내기


<%
b_tb = "핑을 보낼 블로그 게시물의 트랙백 주소"

if b_tb <> "" then '만약 트랙백 주소가 입력되었다면 ..


 ' 여기서 부터 트랙백 처리
 
 ' 핑을 보낼 준비하자
 x_Posturl = Server.URLEncode(나의 글의 고유주소)
 x_BlogName = Server.URLEncode(나의 블로그명)
 x_Title = Server.URLEncode(나의 글의 제목)
 x_Excerpt = Server.URLEncode(나의 글의 내용)

 Str_tb="title="&x_Title&"&url="&x_Posturl&"&excerpt="&x_Excerpt&"&blog_name="&x_BlogName


 ' 트랙백 핑을 보내자
 set xml = server.CreateObject("msxml2.xmlhttp")
 xml.open "POST", "" & b_tb & "", false
 
 ' 몇가지 헤더처리
 xml.setRequestHeader "Accept-Language","ko"
 xml.setRequestHeader "Accept-Encoding","gzip, deflate"
 xml.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
 xml.setRequestHeader "Connection","Keep-Alive"
 xml.setRequestHeader "Cache-Control","no-cache"
 xml.send (Str_tb)
 
 ' 트랙백 핑 성공여부
 If InStr(1, xml.responseText, "<error>0</error>") Then
  ' 성공일경우 처리
 Else
  ' 실패일경우 처리
 End If
 
 Set xml = Nothing

end if
%>


일반적으로 글의 저장 또는 편집시 사용하실수 있습니다. 그리고 Str_tb 변수 정의 하면서 POST 로 넘기는 변수명은 변경하시면 안됩니다. 또한 위 소스에서는 msxml2.xmlhttp 컴포넌트를 이용하여 POST 형태로 핑을 전송합니다. 트랙백 핑의 성공여부는 받아온 xml 을 디코딩 하셔도 되지만 그냥 <error>부분만 체크하기 위해 instr 로 처리하였습니다. 추가적으로 <message> 부분도 체크하여 성공 또는 실패시의 메시지를 받아오실수도 있습니다. 간혹 핑 전송시 한글이 깨어진다는 질문이 있는데, 이 경우 UrlEncoding 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.



출처: http://nbloger.com/blog/xbb.asp?blogid=iendev&action=view&b_idx=205

2008/02/21 15:25 2008/02/21 15:25