<%
serverscript="asp"
%>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<form>
<div align="center"><center>
<table border="0">
<tr>
<td colspan="2" align="center">서버스크립트</td>
</tr>
<tr>
<td><input type="radio" value="asp" name="Topping1"
<% If serverscript = "asp" Then Response.Write("checked") %>></td>
<td>ASP</td>
</tr>
<tr>
<td><input type="radio" value="php" name="Topping1"
<% If serverscript = "php" Then Response.Write("checked") %>></td>
<td>PHP</td>
</tr>
<tr>
<td><input type="radio" value="jsp" name="Topping1"
<% If serverscript = "jsp" Then Response.Write("checked") %>></td>
<td>JSP</td>
</tr>
</table>
</center></div>
</form>
</BODY>
</HTML>
2008/02/21 15:22 2008/02/21 15:22

퍼왔습니다. 출처가 기억안나네요.


<HTML>
<BODY>
<center><h2>ServerVariable All</h2></center>
<TABLE border="1">
<TR><TD><center>Key</center></TD>
<TD><center>Value</center></TD></TR>
<% For Each key in Request.ServerVariables %>
<TR>
<TD><center><font face="돋움" size="2"><% = key%></font></center></TD>
<TD><font face="돋움" size="2">
<%
if Request.ServerVariables(key) = "" Then
   Response.Write "&nbsp"
else
   Response.Write Request.ServerVariables(key)
end if
%>
</font></TD></TR>
<% Next %>
</TABLE>
</BODY>
</HTML>

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

global.asa를 이용한 카운터 예제입니다.
너무흔한 예제이지만 파일처리와 global.asa를 이해하는데 더 없이 좋은 예제인거 같아서 올려봅니다.
가급적 이해하기 쉬우시라고 많은 주석처리를 하였습니다.


예제를 실행시키기 위해서는 counter.txt라는 파일을 웹사이트 루트에 만들고, 초기값을 0을 주셔야 합니다.
어제올린 파일을 이용한 접속카운터 예제처럼 파일이 없을때 생성시키는 것도 가능하나 global.asa에는
가급적 부담을 적게하는게 원칙이라 파일생성 부분은 구현에서 배제하였습니다.


※혹시 모르시는분을 위한 총접속자 확인방법
첫번째방법 : global.asa에 저장된 총접속자수를 확인하기 위해서는 확인하고자 하시는 asp파일에
<%=Application("cnt")%> 부분을 삽입해 두거나 Application("cnt") 값을 특정
변수에 할당해서 그변수값을 출력해서 확인합니다.
두번째방법 : 웹사이트의 루트에 생성해둔 counter.txt파일을 직접 열어서 확인합니다.


<SCRIPT LANGUAGE=VBScript RUNAT=Server>


SUB Application_OnStart
'이곳에서는 서버가 시작되고 사용자가 처음 들어왔을때 딱 한번실행  


'서버 시작후 사용자가 처음 방문했을때 counter.txt 파일에서 값을 읽어서 Application("cnt")에 대입합니다.
Set objFSO  = CreateObject("Scripting.FileSystemObject")
FilePath = Server.MapPath(".") & "\counter.txt"
Set objFile = objFSO.OpenTextFile(FilePath, 1) 'Open Text File의 두번째 인수 1은 읽기전용입니다.
cnt = objFile.ReadLine '파일의 라인을 읽어서 값을 cnt 에 대입한다
Application("cnt")=cnt 'Application("cnt")에 cnt값을 대입합니다.Application("cnt")에는 총방문자수가 기록됩니다.
objFile.Close
Set objFile=nothing
Set objFSO = nothing

End Sub


Sub Application_OnEnd
'이곳은 모든 사용자의 세션이 (개별 세션이 아님, 사이트종료 시점) 끝나게될때 실행됩니다.


'세션이 끝날때 총방문자수(Application("cnt"))를 파일에 저장해 둡니다.
Set objFSO=Createobject("Scripting.FileSystemObject")
FilePath=Server.MapPath(".") & "\counter.txt"
Set objFile=objFSO.OpenTextFile(FilePath,2) 'Open Text File의 두번째 인수 2는 쓰기전용입니다.
objFile.WriteLine(Application("cnt"))
objFile.close
Set ObjFile=nothing
Set ObjFSO=nothing


End sub


Sub Session_OnStart
'여긴 매 사용자가 들어올때마다 실행됩니다.  


Session.TimeOut=30 '세션 지속시간을 30분으로설정, Default지속시간은 20분입니다.
Application.Lock   'Application("cnt")의 값을 수정하기 위해 다른사람의 접근을 막습니다.
Application("cnt")=Application("cnt")+1
Application.Unlock '변수수정이 끝나면 접근금지를 풉니다


Set objFSO=Createobject("Scripting.FileSystemObject")
FilePath=Server.MapPath(".") & "\counter.txt"
Set objFile=objFSO.OpenTextFile(FilePath,2) 'Open Text File의 두번째 인수 1은 읽기전용입니다.
objFile.WriteLine(application("cnt"))
objFile.close
set objFSO=nothing
set objFile=nothing


End Sub


Sub Session_OnEnd
'이곳에서는 세션이 종료시 실행됩니다. 세션 종료시점은 TimeOut(default 20분)동안 아무런 페이지도 접근하지않았을때, 세션의 'Abondon명령을 실행했을 때입니다.

End Sub


</SCRIPT>

2008/02/21 15:18 2008/02/21 15:18

간단하게 만들어본 카운터예제입니다. Session방식이 아니라서 페이지가 로딩될때마다 카운터가 막 올라갑니다.

다음번에는 global.asa에서 사이트에 접근하는 Session을 체크하는 방식으로 수정해서 올리겠습니다.

소스는 잘 실행됩니다.


<HTML>
<HEAD>
<TITLE>카운터예제</TITLE>
</HEAD>
<BODY>
<%


   Dim objFSO, objFile, FilePath
   Const ForReading = 1, ForWriting = 2, ForAppending = 8

   Const FileName = "\counter.txt"

   Filepath = Server.MapPath(Filename)

   '파일시스템 객체를 생성한다.  
   Set objFSO  = CreateObject("Scripting.FileSystemObject")
  
   '파일이 존재하면
   If objFSO.FileExists(Filepath) Then
   Set objFile = objFSO.OpenTextFile(FilePath, ForReading, False, TristateUseDefault)
                 cnt = objFile.ReadLine '파일의 라인을 읽어서 값을 cnt 에 대입한다
          objFile.Close
   End If

  
   Set objFile = objFSO.CreateTextFile(FilePath, true )
                 cnt = cnt + 1
   objFile.Write cnt
   objFile.Close

   Set objFSO = nothing


%>
<h2><%=cnt%></h2>
</BODY>
</HTML>

2008/02/21 15:17 2008/02/21 15:17