'Programming/ASP'에 해당하는 글 8건

The #include Directive

서버에서 ASP 파일을 처리하기 전에, #include 명령으로 또 다른 ASP 파일에 ASP 파일의 내용을 삽입할 수 있다.
#include 명령은 여러 페이지에 재사용할 functions, headers, footers, elements 등을 생성하는데 사용한다.


How to Use the #include Directive

: mypage.asp
<html>
<body>
<p><!--#include file="menu.inc"--></p>
...
<p><!--#include file="time.inc"--></p>
</body>
</html>

: menu.inc
"menu1 | menu2 | menu3 | menu4"

: time.inc
<%
Response.Write(Time)
%>

mypage.asp 파일을 브라우저에서 열고, 코드를 보면 다음과 같다.
<html>
<body>
<p>"menu1 | menu2 | menu3 | menu4"</p>
...
<p>11:33:42 AM</p>
</body>
</html>


Syntax for Including Files

ASP 페이지에 파일을 포함하려면, 주석 태그안에 #include 명령을 사용한다.
<!--#include virtual="somefilename"-->
of
<!--#include file="somefilename"-->


The Virtual Keyword

가상 디렉토리로 시작하는 경로를 가리키려면 virtual 키워드를 사용한다.
header.inc 라는 파일이 /html 이라는 가상 디렉토리에 존재한다면, header.inc 파일의 내용은 다음과 같이 삽입될 것이다.
<!--#include virtual="/html/header.inc"-->


The File Keyword

상대 경로를 가리키려면 file 키워드를 사용한다.
상대 경로는 포함하는 파일이 속한 디렉토리로부터 시작된다.
html 디렉토리에 현재 페이지가 있고 html\headers 디렉토리에 header.inc 파일이 있다면, 페이지에 header.inc 파일은 다음과 같이 삽입될 것이다.
<!--#include file="headers\header.inc"-->


Tips and Notes

위의 내용에서 포함된 파일에 .inc 확장자를 사용했다.
사용자가 INC 파일에 직접 접근한다면, 그 내용이 전부 나타나게 될 것이다.
포함될 파일이 기밀 정보이거나 아무에게도 보여주길 원하지 않는 정보를 담고 있다면, ASP 확장자를 사용하는 것이 더 좋다.
ASP 파일의 소스 코드는 해석 후에는 보여지지 않을 것이다.
포함된 파일은 또한 다른 파일을 포함할 수 있고, 하나의 ASP 파일은 하나 이상의 파일들을 포함할 수 있다.

Important
포함된 파일들은 스크립트가 실행되기 전에 처리되고 삽입된다.

다음 스크립트는 변수에 값을 할당하기 전에 ASP가 #include 명령을 실행하기 때문에 처리되지 않을 것이다.
<%
fname="header.inc"
%>
<!--#include file="<%=fname%>"-->

INC 파일에서 스크립트 구분자를 열거나 닫을 수 없다. 다음 스크립트는 처리되지 않을 것이다.
<%
For i = 1 To n
  <!--#include file="count.inc"-->
Next
%>

그러나 다음 스크립트는 작동한다.
<% For i = 1 to n %>
<!--#include file="count.inc"-->
<% Next %>


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
Application Object

웹에서 어플리케이션은 ASP 파일들의 그룹이 될 것이다.
ASP 파일들은 몇가지 목적을 행하려고 함께 작동한다.
ASP에서 Application 객체는 이 파일들을 합쳐주는데 사용된다.

Application 객체는 Session 객체처럼 어떤 페이지에서든 변수를 저장하고 접근하는데 사용된다.
차이점은 Session은 각 사용자에 대하여 하나의 Session 객체가 있는 반면에 모든 사용자들은 Application 객체를 공유한다.

Application 객체는 어플리케이션(DB 접속 정보등)의 많은 페이지들에서 사용될 정보를 유지할 것이다.
이것은 어떤 페이지에서든 정보에 접근할 수 있다는 것을 의미한다.
또한 한 곳에서 정보를 수정할 수 있고, 수정된 것들은 자동적으로 모든 페이지들에 반영된다는 것을 의미한다.


Store and Retrieve Application Variables

Application  변수들은 어플리케이션의 어떤 페이지에서든 수정되고 접근될 수 있다.
Global.asa 파일에서 Application 변수를 생성할 수 있다.

Application 변수 vartime, users를 생성하는 예
<script language="vbscript" runat="server">
Sub Application_OnStart
application("vartime") = ""
application("users") = 1
End Sub
</script>

Application 변수의 값에 접근하는 예
<%
Response.Write(Application("users"))
%>


Loop Through the Contents Collection

Contents 컬렉션은 모든 어플리케이션 변수들을 포함한다.
<%
dim i
For Each i in Application.Contents
  Response.Write(i & "<br />")
Next
%>


Lock and Unlock

Lock 메소드로 어플리케이션을 잠그고 Unlock 메소드로 잠김을 해제할 수 있다.
어플리케이션이 잠겨지면, 사용자는 Application 변수들을 수정할 수 없다.
<%
Application.Lock
  'do some application object operations
Application.Unlock
%>

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

ASP Session Object

Programming/ASP 2008. 1. 16. 16:27
The Session object

어플리케이션에서 작업을 할 때, 어플을 열고, 어떤 작업을 하고, 어플을 닫는데, 세션도 이와 같다.
사용자가 어플을 시작하고 닫을 때, 컴퓨터는 사용자가 누구인지 안다.
그러나 인터넷에서 한 가지 문제가 있다
: HTTP 주소는 유지 상태가 아니기 때문에 웹 서버는 사용자가 누구인지 무엇을 할 지 모른다.

ASP는 각 사용자에게 고유한 쿠키를 생성함으로써 이 문제를 해결한다.
쿠키가 클라이언트에 보내지고 쿠키는 사용자를 인증하는 정보를 담고 있다.
이 인터페이스는 세션 객체라 불린다.

세션 객체는 사용자 세션에 대한 설정을 바꾸거나 세션에 관한 정보를 저장하는데 사용된다.
세션 객체에 저장된 변수들은 한 사용자에 관한 정보를 유지하고, 어플리케이션에서 모든 페이지에 이용 가능하다.
세션 변수들에 저장된 일반 정보들은 이름, 아이디, 등이다.
서버는 각 새로운 사용자에게 새로운 세션 객체를 생성하고, 세션 만료시 세션 객체를 파괴한다.


When does a Session Start?

그새로운 사용자는 ASP 파일을 요청하고, Global.asa 파일은 Session_OnStart 프로시저를 포함한다.
값은 세션 변수에 저장된다.
사용자가 ASP 파일에 요청하고, Global.asa 파일은 세션 유효 범위로 객체를 증명하기 위해 <object> 태그를 사용한다.


When does a Session End?

사용자가 요청하지 않거나, 특정 기간에 대해 페이지를 새로고침 하지 않으면 세션은 만료된다. 기본은 20분이다.
기본 시간보다 더 짧거나 길게 시간 조정을 하길 원한다면, Timeout 속성을 지정할 수 있다.

5분의 시간 간격을 지정하는 예
<%
Session.Timeout = 5
%>

세션을 즉시 끝내려면 Abandon 메소드를 사용
<%
Session.Abandon
%>


Store and Retrieve Session Variables

세션 객체에서 가장 중요한 것은 세션에 변수를 저장할 수 있다는 것이다.
세션 변수 username 과 age 에 값을 지정하는 예
<%
Session("username") = "oops"
Session("age") = 18
%>

세션 변수에 값이 저장되어질 때 ASP 어플의 어느 페이지에서도 이용 가능하다.
Welcome <%Response.Write(Session("username"))%>


Remove Session Variables

Contents 컬렉션은 모든 세션 변수들을 담고 있다.
Remove 메소드로 세션 변수를 제거하는 것이 가능하다.
세션 변수 age 값이 18보다 작으면 세션 변수 sale 를 제거하는 예
<%
If Session.Contents("age") < 18 then
  Session.Contents.Remove("sale")
End If
%>

모든 세션 변수를 제거하려면 RemoveAll 메소드를 사용한다.
<%
Session.Contents.RemoveAll()
%>


Loop Through the Contents Collection

Contents 컬렉션에 저장된 것들을 보기위해 반복 명령을 실행하는 예
<%
Session("username") = "oops"
Session("age") = 18
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>

Contents 컬렉션에 저장된 아이템 수를 모른다면 Count 속성을 사용할 수 있다.
<%
dim i
dim j
j = Session.Contents.Count
Response.Write("Session variables: " & j)
For i = 1 to j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>


Loop Through the StaticObjects Collection

세션 객체에 저장된 모든 객체의 값을 보려면 StaticObjects 컬렉션을 반복시킬 수 있다.
<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

ASP Cookies

Programming/ASP 2008. 1. 15. 11:59
What is a Cookie?
  • 쿠키는 사용자를 인증하는데 주로 사용된다.
  • 쿠키는 서버가 사용자의 컴퓨터에 생성하는 작은 파일이다.
  • 같은 컴퓨터가 브라우저로 페이지를 요청할 때마다, 쿠키 역시 보내질 것이다.

How to Create a Cookie?

Response.Cookies 명령은 쿠키를 생성하는데 사용되고, <html> 태그 이전에 나타나야만 한다.
: firstname 이라는 이름의 쿠키와 oops 라는 값을 할당 하는 예

<%
Response.Cookies("firstname") = "oops"
%>

쿠키가 만료될 날짜를 지정하는 등의 쿠키 속성을 할당하는 것 또한 가능하다.

<%
Response.Cookies("firstname") = "oops"
Response.Cookies("firstname").Expires = #May 10, 2007#
%>


How to Retrieve a Cookie Value?

Request.Cookies 명령은 쿠키값을 검색하는데 사용한다.
: firstname 이라는 이름의 쿠키값을 검색하고 출력

<%
fname = Request.Cookies("firstname")
response.write(fname)
%>


A Cookie with Keys

쿠키가 여러 값을 가진다면, 우리는 쿠키가 키를 가지고 있다고 말한다.
: user 라는 이름의 쿠키를 생성하고, user 쿠키는 사용자에 관한 정보를 얻은 키를 가지는 예

<%
Response.Cookies("user")("firstname") = "Oops"
Response.Cookies("user")("lastname") = "Lee"
Response.Cookies("user")("country") = "Seoul"
Response.Cookies("user")("age") = "18"


Read all cookies

<%
Response.Cookies("firstname") = "hongs"
Response.Cookies("user")("firstname") = "Oops"
Response.Cookies("user")("lastname") = "Lee"
Response.Cookies("user")("country") = "Seoul"
Response.Cookies("user")("age") = "18"
%>

서버가 사용자에게 위의 모든 쿠키값을 보낸다고 가정하자
: 사용자에게 보내진 모든 쿠키를 읽는 예

<html>
<body>

<%
dim x, y
for each x in Request.Cookies
  response.write("<p>")
  if Request.Cookies(x).HasKeys then
    for each y in Request.Cookies(x)
      response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
      response.write("<br />")
    next
  else
    Response.Write(x & "=" & Request.Cookies(x) & "<br />")
  end if
  response.write("</p>")
next
%>

</body>
</html>

// output
user:firstname=Oops
user:lastname=Lee
user:country=Seoul
user:age=18
firstname=hongs


What if a Browser Does NOT Support Cookies?

어플리케이션이 쿠키를 지원하지 않는 브라우저를 사용한다면, 어플리케이션이 또 다른 페이지로부터 정보를 건네 받을 다른 방법을 사용해야만 할 것이다.

1. Add parameters to a URL
URL에 파라미터를 추가하는 방법

<a href="welcome.asp?fname=Oops&lname=Lee">
Go to Welcome Page</a>

welcome.asp 파일에서 값을 검색하려면 다음과 같이 한다.

<%
fname = Request.querystring("fname")
lname = Request.querystring("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>

2. Use a form
폼은 사용자가 전송 버튼을 클릭했을 때 사용자 입력을 welcome.asp 로 보낸다.

<form method="post" action="welcome.asp">
First Name: <input type="text" name="fname" value="">
Last Name: <input type="text" name="lname" value="">
<input type="submit" value="Submit">
</form>

welcome.asp 파일에서 값을 검색하려면 다음과 같이 한다.

<%
fname = Request.form("fname")
lname = Request.form("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>



WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
User Input

Request 객체는 폼으로부터 사용자의 정보를 검색하는데 사용될 것이다.

<form method="get" action="simpleform.asp">
First Name: <input type="text" name="fname" /><br />
Last Name: <input type="text" name="lname" /><br />
<input type="submit" value="Submit" />
</form>

사용자 입력은 두가지 방법으로 검색될 수 있다.
(Request.QueryString or Request.Form)


Request.QueryString

Request.QueryString 명령은 GET 메소드로 폼에서 값을 받을 때 사용된다.
GET 메소드의 폼으로부터 보내진 정보는 모두에게 보여질 것이고(주소창에 나타남) 보내진 정보의 길이에 제한을 가진다.
위의 예제 폼에서  "Lee", "Hong"을 입력한다면 URL은 서버에 다음과 같이 보내진다.
http://www.oops4u.com/example.asp?fname=Lee&lname=Hong

: example.asp
<body>
<%
response.write(request.querystring("fname") & " " & request.querystring("lname"))
%>
</body>


Request.Form

Request.Form 명령은 POST 메소드로 된 폼에서 값을 받을 때 사용된다.
POST 메소드의 폼으로부터 보내진 정보는 다른이들에게 보여지지 않고, 보내진 정보의 길이에 제한이 없다.

<body>
<%
response.write(request.form("fname") & " " & request.form("lname"))
%>
</body>


Form Validation

  • 사용자 입력은 가능하면 브라우저에서 유효해야만 한다.
  • 브라우저 유효성은 더 빠르고 서버 로드를 줄인다.
  • 사용자의 입력이 데이터베이스 안에 삽입될 것이라면 서버 유효성을 사용하는 것을 고려해야 한다.
  • 서버에서 폼을 검증하기 위한 좋은 방법은 다른 페이지로 보내는 대신에 자체 페이지로 폼을 보내는 것이다.
  • 사용자는 폼에 대해 같은 페이지에서 에러 메시지를 얻을 것이고, 이것은 에러 발견을 더 쉽게 한다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,