2008. 9. 5. 23:46

<head> 와 </head> 사이에 넣어주셔야합니다.

<script language='JavaScript' SRC='다운 받은 js파일 경로'></script>
<script language='JavaScript'>
  MakeShortCut("Think Outside The Box", "사이트 주소", "아이콘 주소");
</script>

js파일을 열어서 적당히 수정해 주세요




Posted by ToTb
2008. 9. 5. 23:38
자주 사용되는 윈도우 명령어로
WinNT폴더(윈9x는 Window폴더)에 위치하며 시작메뉴-실행 명령으로 바로 실행되는 유용한 명령어입니다.

msconfig
(시작프로그램 제어등 많은기능 제공)
단, 윈2000은 지원 안함->
윈2000용 msconfig 다운받기
regedit(레지스트리 편집기)

sfc
(시스템 파일 검사및 복원)
단, 윈2000은 cmd - sfc 혹은 sfc /scannow
-윈2000의 경우 시디를 넣었음에도 불구하고 시디인식이 제대로 안될때 리부팅후 다시 해본다. 파일복구미지수
-위 방법보다는 윈2000시디부팅 후 설치화면상의 콘솔복구방법을 강추천한다.

winipcfg
(인터넷에 접속된 자신의 아이피 주소를 보여줌)
단, 윈2000은 ipconfig로 변경됨

dxdiag
(다이렉트X진단도구 및 그래픽과 사운드의 세부정보를 보여줌)

sysedit
(autoexec.bat , config.sys ,win.ini, system.ini  시스템구성편집기)

command
(도스명령프롬프트 실행)
윈2000은 cmd도 가능

telnet open 사이트주소
(텔넷접속명령어)

netstat -na
(현재 열린포트와 TCP/IP 프로토콜정보를 보여줌)
-열린포트로 트라이목마형 바이러스 침투 유무확인가능

systray
(사운드 볼륨설정 노란색 스피커 아이콘을 트라이목록에 띄움)

ping 사이트주소
(핑테스트 해당 사이트의 인터넷연결 유무 확인)

=윈2000&윈xp=
taskmgr.exe 또는 shift+ctrl+esc : 작업관리자 열기단축키
gpedit.msc : 로컬 컴퓨터 정책 ㅡ 관리템플릿[바탕화면, 작업표시줄및 시작메뉴, 제어판, 시스템등 사용자가 기능을 제어할 수 있다.
lusrmgr.msc : 로컬 사용자 및 그룹
compmgmt.msc : 컴퓨터 관리
devmgmt.msc : 장치관리자
diskmgmt.msc : 디스크 관리
dfrg.msc : 디스크 조각모음
eventvwr.msc : 이벤트 뷰어
fsmgmt.msc : 공유폴더
perfmon.msc : 성능모니터뷰
rsop.msc : 정책의 결과와 집합
secpol.msc : 로컬 보안설정
services.msc : 서비스

Posted by ToTb
2008. 9. 5. 23:37

작업환경 :
        OS = 한글windows2000 server
        DB = MS-SQL2000
        개발에디터 = Ultra Editor, Notepad (노트패드는 소스화일을 저장시 utf-8로 저장하기 위해 필요함)
        mail = sendmail, 기본smtp

1. 유니코드로 작성한다.
    -소스상단에 넣어야 할 것
        <% session.codepage = 65001 %>
        <% Response.CharSet = "utf-8" %>
    -html 부분과 중국어폰트적용
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    -화일을 저장시 노트패드 등을 이용하여 utf-8로 저장함

2. DB 작업
    -중국어가 들어가는 필드(문자열)를 nvarchar로 설정
    -소스 : 유니코드의 값부분에 N을 넣어준다. (insert, select, uodate, delete 동일)
        <%
            insert into tblName (title) value (N'&variable&')
        %>

3. window2000 설정
     -제어판->국가별옵션에서
        --사용자로케일을 중국어(RPC)로 설정(본토인경우)
        --시스템언어설정을 중국(간체)로 설정하고 기본값으로 설정
        --시간부분의 오전,오후를 중국어표기로 변경(그래야 now()함수를 사용시 중국시간표기로 나옴 2002-02-12 오전 10:00에서 오전자가 중국어로 나온다는 말)
        --시스템언어설정이 중국어로 되더라도 윈도우환경이 메뉴등은 한글로 표기되나... 폴더명, 화일명 등의 한국어는 깨지며 소스화일의 한국어가 ㅁ ? 등으로 표기됨, 중국어는 제대로 보임 즉, 한국어와 중국어가 바뀌는 현상발생함.

4.asp페이지와 페이지사이의 quertstring에서 중국어가 안 넘어가는 경우 해결법
    -server.urlencode을 이용하여 넘겨주면 해결
    -소스예
            <a class='MIME' href="page1.asp?param1=<%=server.urlencode("변수명")%>">클릭하세요</a> 여기서 변수명의 실제값이 중국어이다.

5.asp페이지의 스크립트부분에서 변수에 중국어를 넣을 때 에러나는 경우 해결법
    -소스상단에 <% session.codepage = 65001 %> 대신에 <%@ CODEPAGE = 65001 %>을 넣어줌.

6.abcupload, dextupload 등을 이용하여 폼을 넘길 경우 해결법
    -소스예
    <%
        set UploadForm = server.CreateObject("ABCUpload4.XForm") 'abs일 경우
        'Set uploadForm = Server.CreateObject("DEXT.FileUpload") 'dext일 경우
        UploadForm.CodePage = 65001
     %>

7.이메일발송시 중국어 깨지는 것 해결
    -소스예
    <%
        objMail.SetLocaleIDs(936) '로케일설정을 936(중국)으로 설정하며
        body =  "<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" '보내는 바디부분에
        '이페이지 상단은 session.codepage = 65001 로 타페이지와 같음
    %>

8. now()사용시 오전/오후 한글로 표기되는 경우(한글OS에서 중국으로 셋팅하여 사용하는 경우)
 session.LCID=2052

9.
queryString으로 받았는데 중국어가 깨지는 경우가 있으면...
자바로 된 실시간 쪽지에서 유저애플릿으로 쪽지내용을 보내주고 이를 쿼리스트링으로 넘겨서 받는 사람에게 실시간으로 보여줄 때 중국어, 한국어 등등 모두 가능하게 해야 되기에 이런 방법을 써봤습니다.

<script language="JavaScript">
    strMsg = window.location.search.split("msg=");
    displayMsg = strMsg[1].replace(/%20/gi," "); //  /%20/gi 패턴정규식으로 space를 " "로 바꿔줍니다.
    document.writeln("      <iframe src='./paper_receive_iner.asp?msg="+String(displayMsg)+"' width='280' height='100'     frameborder='0' marginwidth='0' marginheight='0' style='border:none;background-color:#f5f5f5'>");
    document.writeln("      </iframe>");
</script>


Posted by ToTb
2008. 9. 5. 23:34
 

General syntax

ASP Comments, inline
'my dog has fleas
PHP Comments, inline
//my dog has fleas
ASP Comments, block

not available?
PHP Comments, block
/*
  The quick brown fox
  jumped over the lazy dogs.
*/
ASP, Escaping quotes
""

"var text1=""<img src=\""blank.gif\"">"";"
PHP, Escaping quotes
\" or use ' like javascript

'var text1="<img src=\"blank.gif\">";';
ASP Command termination
None, but only one command per line.
PHP Command termination
Each command must end with ; but
multiple commands per line are allowed.
ASP Screen output
response.write "hello"
PHP Screen output
echo "hello";
ASP Newline characters
vbCrLf

response.write "hello" & vbCrLf
PHP Newline characters
"\n" (must be inside "", not '')

echo "hello \n";
ASP Variable Names
Not case sensitive,
so fName is the same as FNAME
PHP Variable Names
Case sensitive AND must begin with $
so $fName is NOT the same as $FNAME

String Functions

ASP String concatenation
&

fname=name1 & " " & name2
emsg=emsg & "error!"
PHP String concatenation
. and .=

$fname=$name1." ".$name2;
$emsg.="error!";
ASP, Change case
LCase(), UCase()

lowerName=LCase(chatName)
upperName=UCase(chatName)
PHP, Change case
strtolower(), strtoupper()

$lowerName=strtolower($chatName);
$upperName=strtoupper($chatName);
ASP String length
Len()

n=Len(chatName)
PHP String length
strlen()

$n=strlen($chatName);
ASP, Trim whitespace
Trim()

temp=Trim(xpage)
PHP, Trim whitespace
trim() and also ltrim(), rtrim()

$temp=trim($xpage);
ASP String sections
Left(), Right(), Mid()

Left("abcdef",3)      result = "abc"
Right("abcdef",2)     result = "ef"
Mid("abcdef",3)       result = "cdef"
Mid("abcdef",2,4)     result = "bcde"
PHP String sections
substr()

substr("abcdef",0,3);     result = "abc"
substr("abcdef",-2);      result = "ef"
substr("abcdef",2);       result = "cdef"
substr("abcdef",1,4);     result = "bcde"
ASP String search forward, reverse
Instr(), InstrRev()

x=Instr("abcdef","de")        x=4 
x=InstrRev("alabama","a")     x=7
PHP String search forward, reverse
strpos(), strrpos()

$x=strpos("abcdef","de");      x=3
$x=strrpos("alabama","a");     x=6
ASP String replace
Replace(string exp,search,replace)

temp=Replace(temp,"orange","apple")
temp=Replace(temp,"'","\'")
temp=Replace(temp,"""","\""")
PHP String replace
str_replace(search,replace,string exp)

$temp=str_replace("orange","apple",$temp); $temp=str_replace("'","\\'",$temp);
$temp=str_replace("\"","\\\"",$temp);
ASP, split a string into an array
Split()

temp="cows,horses,chickens"
farm=Split(temp,",",-1,1)  
x=farm(0)
PHP, split a string into an array
explode()

$temp="cows,horses,chickens";
$farm=explode(",",$temp);
$x=$farm[0];
ASP, convert ASCII to String
x=Chr(65) x="A"
PHP, convert ASCII to String
$x=chr(65); x="A"
ASP, convert String to ASCII
x=Asc("A") x=65
PHP, convert String to ASCII
$x=ord("A") x=65

Control Structures

ASP, if statements
if x=100 then
  x=x+5 
elseif x<200 then 
  x=x+2 
else 
  x=x+1 
end if
PHP, if statements
if ($x==100) { 
  $x=$x+5; 
} 
else if ($x<200) { 
  $x=$x+2; 
} 
else { 
  $x++; 
}
ASP, for loops
for x=0 to 100 step 2 
  if x>p then exit for
next
PHP, for loops
for ($x=0; $x<=100; $x+=2) { 
  if ($x>$p) {break;}
}
ASP, while loops
do while x<100 
  x=x+1 
  if x>p then exit do
loop
PHP, while loops
while ($x<100) { 
  $x++; 
  if ($x>$p) {break;}
}
ASP, branching
select case chartName
  case "TopSales"
    theTitle="Best Sellers"
    theClass="S"
  case "TopSingles"
    theTitle="Singles Chart"
    theClass="S"
  case "TopAlbums"
    theTitle="Album Chart"
    theClass="A"
  case else
    theTitle="Not Found"
end select
PHP, branching
switch ($chartName) {
  case "TopSales":
    $theTitle="Best Sellers"; $theClass="S";
    break;
  case "TopSingles":
    $theTitle="Singles Chart"; $theClass="S";
    break;
  case "TopAlbums":
    $theTitle="Album Chart"; $theClass="A";
    break;
  default:
    $theTitle="Not Found";
}
ASP functions
Function myFunction(x)
  myFunction = x*16  'Return value
End Function
PHP functions
function myFunction($x) {
  return $x*16;  //Return value
}

HTTP Environment

ASP, Server variables
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("HTTP_USER_AGENT")
Request.ServerVariables("REMOTE_ADDR")
Request.ServerVariables("HTTP_REFERER")
PHP, Server variables
$_SERVER["HTTP_HOST"];
$_SERVER["PHP_SELF"];
$_SERVER["HTTP_USER_AGENT"];
$_SERVER["REMOTE_ADDR"];
@$_SERVER["HTTP_REFERER"];     @ = ignore errors
ASP Page redirects
Response.redirect("wrong_link.htm")
PHP Page redirects
header("Location: wrong_link.htm");
ASP, GET and POST variables
Request.QueryString("chat")
Request.Form("username")
PHP, GET and POST variables
@$_GET["chat"];       @ = ignore errors
@$_POST["username"];
ASP, prevent page caching
Response.CacheControl="no-cache"
Response.AddHeader "pragma","no-cache"
PHP, prevent page caching
header("Cache-Control: no-store, no-cache");
header("Pragma: no-cache");
ASP, Limit script execution time, in seconds
Server.ScriptTimeout(240)
PHP, Limit script execution time, in seconds
set_time_limit(240);
ASP, Timing script execution
s_t=timer 

...ASP script to be timed...

duration=timer-s_t
response.write duration &" seconds"
PHP, Timing script execution
$s_t=microtime();

...PHP script to be timed...
  
$duration=microtime_diff($s_t,microtime());
$duration=sprintf("%0.3f",$duration);
echo $duration." seconds";
  
//required function
function microtime_diff($a,$b) {
  list($a_dec,$a_sec)=explode(" ",$a);
  list($b_dec,$b_sec)=explode(" ",$b);
  return $b_sec-$a_sec+$b_dec-$a_dec;
}

File System Functions

ASP, create a file system object (second line is wrapped)
'Required for all file system functions
fileObj=Server.CreateObject
 ("Scripting.FileSystemObject")
PHP, create a file system object
Not necessary in PHP
ASP, check if a file exists
pFile="data.txt"
fileObj.FileExists(Server.MapPath(pFile))
PHP, check if a file exists
$pFile="data.txt";
file_exists($pFile);
ASP, Read a text file
pFile="data.txt"
xPage=fileObj.GetFile(Server.MapPath(pFile))
xSize=xPage.Size  'Get size of file in bytes

xPage=fileObj.OpenTextFile(Server.MapPath(pFile))
temp=xPage.Read(xSize)  'Read file
linkPage.Close
PHP, Read a text file
$pFile="data.txt";
$temp=file_get_contents($pFile);  //Read file

Time and Date Functions

ASP, Server Time or Date
Now, Date, Time
PHP, Server Time or Date
date()
ASP, Date format (default)
Now = 3/19/2007 8:13:10 AM
Date = 3/19/2007
Time = 8:13:10 AM

Various ASP functions extract date parts:

Month(Date) = 3
MonthName(Month(Date)) = March
Day(Date) = 19
WeekdayName(Weekday(Date)) = Monday
WeekdayName(Weekday(Date),False) = Mon
PHP, Date format
There is no default format in PHP.
The date() function is formatted using codes:

date("n/j/Y g:i:s A") = 3/19/2007 8:13:10 AM

date("n") = 3
date("F") = March
date("j") = 19
date("l") = Monday
date("D") = Mon

Numeric Functions

ASP, convert decimal to integer
Int()

n=Int(x)
PHP, convert decimal to integer
floor()

$n=floor($x);
ASP, determine if a value is numeric
IsNumeric()

if IsNumeric(n) then ...
PHP, determine if a value is numeric
is_numeric()

if (is_numeric($num)) {...}
ASP, modulus function
x mod y
PHP, modulus function
$x % $
Posted by ToTb
2008. 9. 5. 23:33

※설명 : 보통 smtp 로 메일 발송 코딩을 할때 상대방이 메일을 열어봤는지 체크해야할 경우가 있다. 그럴경우 아래와 같이 이미지 태그를 활용해 리턴값을 받아 메일 수신 여부를 확인할 수 있다.

// 메일 본문에 추가할 태그
<IMG SRC="MailOpen.asp?Email=받는사람메일주소&MailCode=메일코드" border="0" height="1" width="1">

// MailOpen.asp
<%
    Email =  Left(trim(request.querystring("Email")),50)
    MailCode = Left(trim(request.querystring("mailCode")),12)
    SQL =  "INSERT INTO MailOpen (MailCode, Email, OpenDate) VALUES ('" & MailCode & "','" & Email & "',getdate())"
    '디비연결 Dbcon 인스턴스 생성
    Dbcon.execute SQL
    '디비해제
%>

Posted by ToTb
2008. 9. 5. 23:32

javascript의 window.print()는 인쇄창(프린터 선택하는 화면)을 여는 기능외에 다른 커스터마이징이 불가능합니다.  인쇄를 하지 않고, 창을 닫았을 때, 처리 방법이 있으면 좋은데..
activeX로 해야할 것 같습니다. activeX로는 scriptX를 이용해 볼만 한데... advanced 기능은 유료로 구매한 경우에만 가능해서 그렇게 추천할 수는 없군요..
다만, scriptX의 기본 기능(무료)중에, 인쇄창을 열었는데... 고객이 인쇄를 하지 않고, 인쇄창을 닫아버리면 return value로 false를 돌려주는 기능이 있습니다. 페이지에서 인쇄창을 열고, 만약 return값이 false면 "인쇄안함"으로 다시 처리하고, true이면 "인쇄됨" 처리하면 100%는 아니지만, 근접한 결과를 얻을 수 있을 것입니다. (각종 프린터 오류가 있어 프린트가 안된 경우는 print에서 결과값을 return 받아야 하는데.. 그러려면, 유료기능을 사용해야 할 듯합니다)

아래에서는  printresult.asp?result=0(실패시) printresult.asp?result=1(성공시)로 처리했는데, 이를 통한 db 작업은 잘 알아서 하시면 되겠습니다..  참고로 scriptx의 기본기능(무료)를 이용하면 프린트 결과물의 header footer 위/아래/좌/우 여백 가로/세로출력 등을 설정할 수 있습니다.

참고 소스는
<OBJECT id="factory" style="DISPLAY: none"
   codeBase="http://www.meadroid.com/scriptx/smsx.cab#Version=6,2,433,14"
   classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext>
   </OBJECT>
<script>
function printPage(){
 factory.printing.header = "";   //머릿말 설정
 factory.printing.footer = "";    //꼬릿말 설정
 factory.printing.portrait = true;  //출력방향 설정: true-가로, false-세로
 factory.printing.leftMargin = 1.0;  //왼쪽 여백 설정
 factory.printing.topMargin = 1.0;  //위쪽 여백 설정
 factory.printing.rightMargin = 1.0;  //오른쪽 여백 설정
 factory.printing.bottomMargin = 1.0;  //아래쪽 여백 설정
 a = factory.printing.Print(true);   //출력하기
 if (!a) {
 window.location.href="printresult.asp?result=0" // 인쇄없이 닫은 경우 처리url  get방식
 }
 else {
 window.location.href="printresult.asp?result=1" // 인쇄한 경우 처리url  get방식
 }

 }
</script>
<body onload="printPage();">
인쇄할 내용
</body>


Posted by ToTb
2008. 9. 5. 23:31
일본어 사이트를 만들어 본 일이 있다. utf-8로 만들면 된다는 힌트를 듣고, 아주 많은 시도를 했다. 그런데.. 제대로된 정보를 얻을 수 없었고, 제대로 만들지도 못했다.
짜증나길래... 일본어 os에 일본어 sql을 깔아서 shift-jis로 서버를 돌리고 말았다. ^^;;
그때의 어려움을 다른 사람들이 겪지 않기를 바라면서.. 내가 가진 힌트들을 정리해 본다.

1. asp 페이지를 만든다.
2. 문자셋을 유니코드 utf-8로 변환한다.
3. 일단 아무내용도 없는 상태에서 저장한다.
4. 페이지 맨윗 줄에 <% @language='vbscript' codepage = '65001' %> 삽입.
5. head에 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 삽입
6. DB설정 char은 nchar로 varchar은 nvarchar로.. 문자형태의 형식은 모두 n이 붙은 형식으로 세팅.
7. SQL구문은 insert into testTable ( subject ) values ( N'" & subject &"' ) 처럼 값의 앞뒤를 작은따옴표로 감싸고 그 앞에 N을 붙여서 값을 INSERT한다. UPDATE로 마찬가지다. 주의할 점은 대문자 N이라는 것!
8. 이제 제대로 한 것 확인후 UTF-8로 세팅된 것 확인하면서 저장! 끝!

점검사항
가. INCLUDE되는 파일도 모두 형식이 UTF-8로 저장되어 있어야 한다. (다만, 그 INCLUDE되는 파일에  <% @language='vbscript' codepage = '65001' %> 을 붙이면 안되겠죠?)
나. .CSS나 .JS 파일 처럼 별도로 작성되어 이 페이지로 불러들여지는 파일들도 마찬가지로 모두 UTF-8로 저장되어 있어야 한다.

DB연동결과 글자가 깨진다면, 먼저... 변수 RESPONSE.WRITE를 이용하여 전달이 제대로 되는지 확인하고, 이상이 없다면 DB확인하면 된다. 이때는 6번과 7번만 확인하면 된다. 만약 변수값이 깨지고 있다면, 2,4,5번과 점검사항의 가/나를 확인해보기 바란다.

주의
utf-8이 아닌 기존 파일을 변환하여 utf-8로 만드는 경우는 주의가 필요하다. 영문은 문제없지만... 한글이 깨지는 경우가 있다. 한글이 깨지고 말면 그나마 다행인데... 때에 따라서는 알 수 없는 특수코드가 붙어버려 에러가 발생하기도 한다.

편집기의 문제라고 생각되는데... 한 두번 정상적으로 잘 되는지 테스트하고 처리하라.. 잘못하면 원본을 날리는 경우가 있다...

팁!
일본어 사이트를 만든 경우, 제대로 출력되고 있는지 확인하는 가장 쉬운 방법은  "ㅡ"(장음표시기호) 글자를 체크해 보는 것이다. 잘못된 경우라면 이 글자가 100% 깨진다. 

Posted by ToTb
2008. 9. 5. 23:29

<%
   urlS     = "http://static.naver.com/kin/img"
   FILENAME = "/tmp13.gif" '/ 표시 주의!
   SAVEpath = Server.MapPath("/")

'   Set http= CreateObject("Microsoft.XMLHTTP") '엮인글의 사유로 변경함

   Set http= CreateObject("MSXML2.ServerXMLHTTP")
       Http.Open "GET", urls&filename, false
       Http.Send()
       binData = Http.ResponseBody
   Set http = Nothing

   Set Stream = CreateObject("ADODB.Stream")
   Stream.open()
   Stream.type = 1
   Stream.Write binData
   Stream.SaveToFile savepath & filename,2
   Set Stream = Nothing

   '--- 화면에 보기
   '   Response.BinaryWrite binData
%>


Posted by ToTb
2008. 9. 5. 23:27

첫번째 프레임 페이지 입니다.
<frameset rows='100%,*' cols='*' framespacing='0' frameborder='NO' border='0'>
<frame src='SlideShow.asp?<%IF Trim(request.querystring) = '' Then Response.Write(request.Form) ELSE Response.Write(request.QueryString)%>' name='mainFrame' >
<frame src='about:blank' scrolling='NO' noresize name='hiddenFrame' >
</frameset>

SlideShow.asp라는 파일에서 임의의 이벤트가 발생하면 이 파일의 특정 콤보에 값을 채우는 방법입니다
이 방식을 사용하면 새로고침의 한계를 뛰어 넘을 수 있습니다.

parent.document.frames['hiddenFrame'].document.location='top.asp?mode=CSSpec&ProductCode=' + document.frmSlide.ProductCode.value; 이런 방식으로 숨겨진 프레임 top.asp파일을 호출합니다. 이런식으로 사이트에 hidden 프레임을 만들어 두면 그렇게 멀게만 느껴졌던 디비호출을 마음대로 할 수 있습니다
=>Top.asp만 잘 정의 하면 대부분의 요청을 asp리프레쉬 없이 처리 할 수 있습니다.

// 여기는 Top.asp에 해당하는 내용입니다
mode에 따라서

<script language='javascript>

var TargetDoc= parent.document.frames['mainFrame'].document;
var oOption;
IF Request('mode') = 'CSSpec' THEN
Set adocmd = Server.CreateObject('ADODB.Command')
WITH adocmd
.ActiveConnection = DbConn
.CommandType = adCmdStoredProc
.CommandText = 'IS_CSEnterOrderCounts'
.Parameters.Refresh
.Parameters.Item('@ProductCode').Value= Cint(Request('ProductCode'))
Set RS = .Execute
END WITH
%>
for( key in TargetDoc.frmSlide.CSSpec)
{
TargetDoc.frmSlide.CSSpec.remove(key);
}
<%
Do While Not RS.EOF
%>
oOption = TargetDoc.createElement('OPTION');
oOption.value='<%=Trim(RS('ColorCode')) %>;<%=Trim(RS('SizeCode')) %>';
oOption.text ='<%=Trim(RS('Name') )%>-<%=Trim(RS('Size'))%>';
TargetDoc.frmSlide.CSSpec.add(oOption);
<%
RS.MoveNext
Loop
RS.close()
END IF%>

</script>


Posted by ToTb
2008. 9. 5. 23:26
# setInterval()과 XMLHTTP 를 이용하여 페이지 Refresh

* 장점
1) 브라우저 진행율 표시 안나타남
2) Refresh 소리 없음

--> 이 소스는 정해진 시간마다 회원이 로그아웃 했는지를 체크하기 위해 만들었습니다.
로그인상태의 회원은 LOGON 값을 현재시간으로 업데이트하고,
로그아웃상태인 회원은 LOGON 값이 널(null)이 됩니다.

* logon.asp 는 로그인한 회원정보를 보여주는 파일입니다.
* logon_update.asp 는 logon_time.asp 파일을 일정간격으로 refresh한 효과를 냅니다.
* logon_time.asp 파일은 현재시간을 LOGON 값에 넣어줍니다.



(1) XMLHTTP 설명

1. XMLHTTP 메서드

Abort 현재 HTTP 요청을 취소합니다.
GetAllResponseHeaders 응답 메시지에서 모든 헤더 필드를 검색합니다.
GetResponseHeader 응답 본문에서 HTTP 헤더의 값을 검색합니다.
Open HTTP서버에 대한 연결을 엽니다.
SetRequestHeader 요청 헤더 필드 중 하나를 설정합니다.
Send HTTP 서버로 요청을 보냅니다. 본문이 포함될 수 있습니다.


2. XMLHT TP 속성 : 속성을 사용하여 요청 확인
--> XMLHTTP 속성을 사용하면 요청을 확인할 수 있을 뿐만 아니라 서버로부터
반환된 값을 검색하여 요청으로 발생한 모든 오류를 확인할 수 있습니다.

=========================================================================
속성 값 설명
=========================================================================
OnReadyStateChange 이벤트 처리기 참조 비동기 작업에서만 사용합니다.
이 속성은 데이터가 서버에서 반환되는 것과 같은
대기 상태가 변경될 때 이벤트 처리기 호출을 지정합니다.

ReadyState Integer 비동기 작업의 상태, uninitialized (0), loading (1),
loaded (2), interactive (3), completed (4)를 나타냅니다.

ResponseBody Variant 배열 응답의 본문을 배열로 반환합니다.
ResponseStream IStream 응답의 본문을 ADO Stream 개체로 반환합니다.
ResponseText String 응답의 본문을 텍스트 문자열로 반환합니다.
ResponseXML XMLDocument 개체 응답의 본문을 MSXML XMLDOM 파서로 분석된 것으로
반환합니다.
Status Long 서버가 반환한 HTTP 상태 코드
StatusText String HTTP 응답 라인 상태
=========================================================================


(2) 소스 설명

'----------logon.asp 시작------------------

' member_uid : 회원 고유번호

<iframe width="0" height="0" border="0" frameborder="0" src="/logon_update.asp?member_uid=<%=member_uid%
>"></iframe>

'----------logon.asp 끝 ------------------




'----------logon_update.asp 시작------------------

<%
Dim member_uid
member_uid = Trim(Request.QueryString("member_uid")) ' 회원 고유번호
%>

<html>
<head>
<script language="javascript">
<!--

// logon_update.asp 파일을 로드한다.
function pageLoad() {

// (1) XMLHTTP 객체를 생성합니다.
var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP")

// (2) HTTP서버에 대한 연결을 엽니다.
xmlHTTP.open("get","logon_time.asp?member_uid=<%=member_uid%>",false);

// (3) HTTP 서버로 요청을 보냅니다.
xmlHTTP.send();

}

function intervalCall() {

setInterval("pageLoad()", 5000); // 5초간격으로 pageLoad()함수 호출

}

//-->
</script>
</head>
<body onload="intervalCall()">
</body>
</html>

'----------logon_update.asp 끝------------------



'----------logon_time.asp 시작------------------

<!--#include virtual="/dbconnect.asp"-->
<%
On Error Resume Next

Dim member_uid
member_uid = Trim(Request.QueryString("member_uid")) ' 회원 고유번호

Dim Dbcon, Rs, sqlQuery

' dbconnect.asp 에 정의된 DbOpen()함수를 통해 DB Connection 객체 생성
'(@@ 이부분은 직접 정의하여 사용하세요 ^^;)
Set Dbcon = DbOpen()

' 로그인한지 10초가 초과한 회원의 logon필드값을 널(NULL)로 업데이트
strSQL = ""
strSQL = "UPDATE Q_MEMBER"
strSQL = strSQL & " SET LOGON = NULL"
strSQL = strSQL & " WHERE DATEDIFF(SECOND, LOGON, getdate()) > 10"
Dbcon.Execute(strSQL)


sqlQuery = ""
sqlQuery = "SELECT * FROM MEMBER_INFO WHERE MEMBER_UID="& member_uid

' 회원 로그온 시간 업데이트
Set Rs = Server.CreateObject("ADODB.Recordset")
With Rs
.Source = sqlQuery
.ActiveConnection = Dbcon
.CursorType = adOpenStatic
.LockType = adLockPessimistic
.Open , , , ,adCmdText
.Fields("LOGON_TIME") = Now
.Update
End With

' Error 체크 (@@ ErrorCheck() 함수도 dbconnect.asp 에 정의됨.)
Call ErrorCheck("회원 로그온 시간 UPDATE 처리")

Rs.Close
Set Rs = Nothing

' DB Connection 객체 Close
DbClose(Dbcon)
%>


'----------logon_time.asp 끝------------------


Posted by ToTb