บทช่วยสอน ASP

ASP HOME

กวดวิชา WP

แนะนำหน้าเว็บ มีดโกนหน้าเว็บ เค้าโครงหน้าเว็บ โฟลเดอร์หน้าเว็บ หน้าเว็บทั่วโลก แบบฟอร์มหน้าเว็บ วัตถุหน้าเว็บ ไฟล์หน้าเว็บ ฐานข้อมูลหน้าเว็บ ผู้ช่วยหน้าเว็บ หน้าเว็บ WebGrid แผนภูมิหน้าเว็บ อีเมลหน้าเว็บ ความปลอดภัยของหน้าเว็บ เผยแพร่หน้าเว็บ ตัวอย่างหน้าเว็บ ชั้นเรียนของหน้าเว็บ

มีดโกน ASP.NET

แนะนำมีดโกน มีดโกนไวยากรณ์ มีดโกน C# ตัวแปร มีดโกน C# ลูป มีดโกน C# Logic ตัวแปรมีดโกน VB มีดโกน VB Loops มีดโกน VB Logic

ASP Classic

แนะนำ ASP ไวยากรณ์ ASP ตัวแปร ASP ขั้นตอน ASP เงื่อนไข ASP ASP วนรอบ แบบฟอร์ม ASP คุกกี้ ASP เซสชัน ASP แอปพลิเคชัน ASP ASP #รวม ASP Global.asa ASP AJAX อีเมล ASP ตัวอย่าง ASP

การอ้างอิง ASP

ฟังก์ชัน ASP VB คีย์เวิร์ด ASP VB การตอบสนอง ASP คำขอ ASP แอปพลิเคชัน ASP เซสชัน ASP เซิร์ฟเวอร์ ASP ข้อผิดพลาด ASP ASP FileSystem ASP TextStream ไดรฟ์ ASP ไฟล์ ASP โฟลเดอร์ ASP พจนานุกรม ASP ASP AdRotator ASP BrowserCap การเชื่อมโยงเนื้อหา ASP ตัวหมุนเนื้อหา ASP ASP Quick Ref

กวดวิชา ADO

แนะนำ ADO ADO Connect ชุดระเบียน ADO จอแสดงผล ADO แบบสอบถาม ADO ADO Sort เพิ่ม ADO ADO Update ADO ลบ สาธิต ADO ADO เร่งความเร็ว

วัตถุ ADO

คำสั่ง ADO การเชื่อมต่อ ADO ข้อผิดพลาด ADO ADO Field พารามิเตอร์ ADO ADO พร็อพเพอร์ตี้ บันทึก ADO ชุดระเบียน ADO ADO สตรีม ประเภทข้อมูล ADO

ASP ไฟล์ Global.asa


ไฟล์ Global.asa

ไฟล์ Global.asa เป็นไฟล์ทางเลือกที่สามารถมีการประกาศอ็อบเจ็กต์ ตัวแปร และเมธอดที่สามารถเข้าถึงได้โดยทุกหน้าในแอปพลิเคชัน ASP

สคริปต์เบราว์เซอร์ที่ถูกต้องทั้งหมด (JavaScript, VBScript, JScript, PerlScript เป็นต้น) สามารถใช้ได้ภายใน Global.asa

ไฟล์ Global.asa สามารถมีได้เฉพาะสิ่งต่อไปนี้:

  • กิจกรรมการสมัคร
  • งานกิจกรรม
  • <object> ประกาศ
  • ประเภทการประกาศห้องสมุด
  • คำสั่ง #include

หมายเหตุ:ไฟล์ Global.asa ต้องเก็บไว้ในไดเร็กทอรีรากของแอปพลิเคชัน ASP และแต่ละแอปพลิเคชันสามารถมีไฟล์ Global.asa ได้เพียงไฟล์เดียวเท่านั้น


กิจกรรมใน Global.asa

ใน Global.asa คุณสามารถบอกแอปพลิเคชันและวัตถุของเซสชันว่าต้องทำอย่างไรเมื่อแอปพลิเคชัน/เซสชันเริ่มต้น และต้องทำอย่างไรเมื่อแอปพลิเคชัน/เซสชันสิ้นสุดลง รหัสนี้อยู่ในตัวจัดการเหตุการณ์ ไฟล์ Global.asa สามารถมีเหตุการณ์ได้สี่ประเภท:

Application_OnStart - เกิดขึ้นเมื่อผู้ใช้ FIRST เรียกหน้าแรกในแอปพลิเคชัน ASP เหตุการณ์นี้เกิดขึ้นหลังจากเริ่มเว็บเซิร์ฟเวอร์ใหม่หรือหลังจากแก้ไขไฟล์ Global.asa เหตุการณ์ "Session_OnStart" เกิดขึ้นทันทีหลังจากเหตุการณ์นี้

Session_OnStart - เหตุการณ์นี้เกิดขึ้นทุกครั้งที่ผู้ใช้ใหม่ร้องขอหน้าแรกในแอปพลิเคชัน ASP

Session_OnEnd - เหตุการณ์นี้เกิดขึ้นทุกครั้งที่ผู้ใช้สิ้นสุดเซสชัน เซสชั่นผู้ใช้จะสิ้นสุดลงหลังจากที่ผู้ใช้ไม่ได้ร้องขอเพจในช่วงเวลาที่กำหนด (โดยค่าเริ่มต้นคือ 20 นาที)

Application_OnEnd - เหตุการณ์นี้เกิดขึ้นหลังจากผู้ใช้ LAST สิ้นสุดเซสชัน โดยทั่วไป เหตุการณ์นี้เกิดขึ้นเมื่อเว็บเซิร์ฟเวอร์หยุดทำงาน ขั้นตอนนี้ใช้เพื่อล้างการตั้งค่าหลังจากที่แอปพลิเคชันหยุดทำงาน เช่น ลบระเบียนหรือเขียนข้อมูลลงในไฟล์ข้อความ

ไฟล์ Global.asa อาจมีลักษณะดังนี้:

<script language="vbscript" runat="server">

sub Application_OnStart
'some code
end sub

sub Application_OnEnd
'some code
end sub

sub Session_OnStart
'some code
end sub

sub Session_OnEnd
'some code
end sub

</script>

หมายเหตุ:เนื่องจากเราไม่สามารถใช้ตัวคั่นสคริปต์ ASP (<% และ %>) เพื่อแทรกสคริปต์ในไฟล์ Global.asa เราจึงใส่รูทีนย่อยในองค์ประกอบ HTML <script>



<object> ประกาศ

เป็นไปได้ที่จะสร้างวัตถุที่มีขอบเขตเซสชันหรือแอปพลิเคชันใน Global.asa โดยใช้แท็ก <object>

หมายเหตุ:แท็ก <object> ควรอยู่นอกแท็ก <script>!

ไวยากรณ์

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

Parameter Description
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]

Either ProgID or ClassID must be specified.

ClassID Specifies a unique id for a COM class object.

Either ProgID or ClassID must be specified.

ตัวอย่าง

ตัวอย่างแรกสร้างวัตถุของขอบเขตเซสชันชื่อ "MyAd" โดยใช้พารามิเตอร์ ProgID:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

ตัวอย่างที่สองสร้างวัตถุของขอบเขตแอปพลิเคชันชื่อ "MyConnection" โดยใช้พารามิเตอร์ ClassID:

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

ออบเจ็กต์ที่ประกาศในไฟล์ Global.asa สามารถใช้ได้กับสคริปต์ใดๆ ในแอปพลิเคชัน:

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

ประเภทLibrary Declarations

TypeLibrary เป็นคอนเทนเนอร์สำหรับเนื้อหาของไฟล์ DLL ที่สอดคล้องกับวัตถุ COM การรวมการเรียกไปยัง TypeLibrary ในไฟล์ Global.asa ทำให้สามารถเข้าถึงค่าคงที่ของวัตถุ COM ได้ และรหัส ASP สามารถรายงานข้อผิดพลาดได้ดีขึ้น ถ้าเว็บแอปพลิเคชันของคุณใช้อ็อบเจ็กต์ COM ที่ได้ประกาศชนิดข้อมูลในไลบรารีชนิด คุณสามารถประกาศไลบรารีชนิดใน Global.asa ได้

ไวยากรณ์

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parameter Description
file Specifies an absolute path to a type library.

Either the file parameter or the uuid parameter is required

uuid Specifies a unique identifier for the type library.

Either the file parameter or the uuid parameter is required

version Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid Optional. The locale identifier to be used for the type library

ค่าความผิดพลาด

เซิร์ฟเวอร์สามารถส่งคืนข้อความแสดงข้อผิดพลาดต่อไปนี้:

Error Code Description
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

หมายเหตุ:แท็ก METADATA สามารถปรากฏที่ใดก็ได้ในไฟล์ Global.asa (ทั้งแท็ก <script> ภายในและภายนอก) อย่างไรก็ตาม ขอแนะนำว่าแท็ก METADATA จะปรากฏใกล้กับด้านบนสุดของไฟล์ Global.asa


ข้อ จำกัด

ข้อจำกัดเกี่ยวกับสิ่งที่คุณสามารถรวมไว้ในไฟล์ Global.asa:

  • คุณไม่สามารถแสดงข้อความที่เขียนในไฟล์ Global.asa ไฟล์นี้ไม่สามารถแสดงข้อมูลได้
  • คุณสามารถใช้ได้เฉพาะอ็อบเจ็กต์เซิร์ฟเวอร์และแอปพลิเคชันในรูทีนย่อย Application_OnStart และ Application_OnEnd ในรูทีนย่อย Session_OnEnd คุณสามารถใช้วัตถุเซิร์ฟเวอร์ แอปพลิเคชัน และเซสชันได้ ในรูทีนย่อย Session_OnStart คุณสามารถใช้ออบเจกต์ในตัวใดก็ได้

วิธีใช้รูทีนย่อย

Global.asa มักใช้เพื่อเริ่มต้นตัวแปร 

ตัวอย่างด้านล่างแสดงวิธีการตรวจสอบเวลาที่แน่นอนที่ผู้เยี่ยมชมมาถึงเว็บไซต์เป็นครั้งแรก เวลาจะถูกเก็บไว้ในตัวแปร Session ชื่อ "started" และค่าของตัวแปร "started" สามารถเข้าถึงได้จากหน้า ASP ใดๆ ในแอปพลิเคชัน:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa ยังสามารถใช้เพื่อควบคุมการเข้าถึงเพจ

ตัวอย่างด้านล่างแสดงวิธีการเปลี่ยนเส้นทางผู้เยี่ยมชมใหม่ทุกคนไปยังหน้าอื่น ในกรณีนี้ไปยังหน้าที่ชื่อว่า "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

และคุณสามารถรวมฟังก์ชันต่างๆ ไว้ในไฟล์ Global.asa ได้

ในตัวอย่างด้านล่างรูทีนย่อย Application_OnStart เกิดขึ้นเมื่อเว็บเซิร์ฟเวอร์เริ่มทำงาน จากนั้นรูทีนย่อย Application_OnStart จะเรียกรูทีนย่อยอื่นชื่อ "getcustomers" รูทีนย่อย "getcustomers" จะเปิดฐานข้อมูลและดึงชุดระเบียนจากตาราง "ลูกค้า" ชุดระเบียนถูกกำหนดให้กับอาร์เรย์ ซึ่งสามารถเข้าถึงได้จากหน้า ASP ใดๆ โดยไม่ต้องสอบถามฐานข้อมูล:

<script language="vbscript" runat="server">

sub Application_OnStart
getcustomers
end sub

sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub

</script>

ตัวอย่าง Global.asa

ในตัวอย่างนี้ เราจะสร้างไฟล์ Global.asa ที่นับจำนวนผู้เยี่ยมชมปัจจุบัน

  • Application_OnStart ตั้งค่าตัวแปร "ผู้เข้าชม" ของแอปพลิเคชันเป็น 0 เมื่อเซิร์ฟเวอร์เริ่มทำงาน
  • รูทีนย่อย Session_OnStart เพิ่มหนึ่งรายการให้กับตัวแปร "ผู้เยี่ยมชม" ทุกครั้งที่มีผู้เยี่ยมชมใหม่มาถึง
  • รูทีนย่อย Session_OnEnd จะลบหนึ่งรายการออกจาก "ผู้เยี่ยมชม" ทุกครั้งที่มีการทริกเกอร์รูทีนย่อยนี้

ไฟล์ Global.asa:

<script language="vbscript" runat="server">

Sub Application_OnStart
Application("visitors")=0
End Sub

Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub

</script>

วิธีแสดงจำนวนผู้เยี่ยมชมปัจจุบันในไฟล์ ASP:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>