Download presentation
Presentation is loading. Please wait.
1
ASP.NET 網頁製作教本 – 從基本語法學起
第12章 訪客計數器、廣告迴旋板
2
12-1 訪客計數器
3
文字版訪客計數器 -- Application 物件版本
Tcount1.aspx <HTML> <BODY BGCOLOR=WHITE> <CENTER><H2>Tcount01.aspx -- 文字版訪客計數器 <HR></H2> 您是本站第 <%=Application("counter")%> 位貴賓! </BODY> </HTML> <script Language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Application.Lock Application("counter") = Application("counter") + 1 Application.UnLock End Sub </script>
4
Tcount1.aspx
5
文字版訪客計數器 -- 檔案版本 (Tcount2.aspx #1~14)
#01 Import Namespace="System.IO" %> #02 #03 <HTML> #04 <BODY BGCOLOR=WHITE> #05 <CENTER><H2>Tcount02.aspx -- 文字版訪客計數器 <HR></H2> #06 您是本站第 <%=counter%> 位貴賓! #07 </BODY> #08 </HTML> #09 #10 <script Language="VB" runat="server"> #11 #12 Dim counter As Long = 1 ' 宣告一個計數器變數 #13 #14 Sub Page_Load(sender As Object, e As EventArgs)
6
文字版訪客計數器 -- 檔案版本 (Tcount2.aspx #15~31)
# ' 進行鎖定,防止非同步更新 # Application.Lock #17 # Dim PathName As String = Server.MapPath("counter.txt") #19 # If File.Exists( PathName ) Then ' 判斷 counter.txt 是否存在 # ' 讀取 counter.txt 檔案中的計數器,然後指定給 counter 變數 # Dim sReader As StreamReader # sReader = New StreamReader( PathName, Encoding.Default ) # Dim S As String # S = sReader.ReadLine() # If Not S Is Nothing Then # counter = CLng( S ) + 1 ' 先加一,再指定給 counter 變數 # End If # sReader.Close() # End If#31
7
文字版訪客計數器 -- 檔案版本(Tcount2.aspx #32~42)
# ' 將計數器的值寫回 counter.txt 檔案 # Dim sWriter As StreamWriter # sWriter = New StreamWriter( PathName, False, Encoding.Default ) # sWriter.Write( CStr(counter) ) # sWriter.Flush() # sWriter.Close() #38 # ' 解除鎖定 # Application.UnLock #41 End Sub #42 </script>
8
圖形訪客計數器第一版 顯示圖形的訪客計數器,例如 ,那麼可以把計數器的數值轉換成圖形計數器的 HTML 標示 。若計數器的數值等於 12:
9
PngCounter 函數 把數值轉換成圖形的 HTML 標示這個轉換的工作寫成以下的 PngCounter 函數:
Function PngCounter( counter As Long ) As String Dim S, i, G S = CStr( counter ) ' 先將數值轉成字串 S ' 逐一取字串S的每一個字元, 然後串成 <IMG SRC=?.png> 的圖形標示 For i = 1 to Len(S) G = G & "<IMG SRC=" & Mid(S, i, 1) & ".png Align=TextTop>" Next Return G End Function
10
PngCount.aspx 網頁
11
PngCount.aspx 網頁程式(1) <%@ Import Namespace="System.IO" %>
<HTML> <BODY BGCOLOR=WHITE> <CENTER><H2>PngCount.aspx -- 圖形訪客計數器 <HR></H2> 您是本站第 <%=PngCounter(counter)%> 位貴賓! </BODY> </HTML> <script Language="VB" runat="server"> Dim counter As Long = 1 ' 宣告一個計數器變數 Sub Page_Load(sender As Object, e As EventArgs) ' 進行鎖定,防止非同步更新 Application.Lock Dim PathName As String = Server.MapPath("counter.txt")
12
PngCount.aspx 網頁程式(2) If File.Exists( PathName ) Then ' 判斷 counter.txt 是否存在 ' 讀取 counter.txt 檔案中的計數器,然後指定給 counter 變數 Dim sReader As StreamReader sReader = New StreamReader( PathName, Encoding.Default ) Dim S As String S = sReader.ReadLine() If Not S Is Nothing Then counter = CLng( S ) + 1 ' 先加一,再指定給 counter 變數 End If sReader.Close() ' 將計數器的值寫回 counter.txt 檔案 Dim sWriter As StreamWriter sWriter = New StreamWriter( PathName, False, Encoding.Default ) sWriter.Write( CStr(counter) ) sWriter.Flush() sWriter.Close()
13
PngCount.aspx 網頁程式(1) ' 解除鎖定 Application.UnLock End Sub
Function PngCounter( counter As Long ) As String Dim S, i, G S = CStr( counter ) ' 先將數值轉成字串 S ' 逐一取字串S的每一個字元, 然後串成 <IMG SRC=?.gif> 的圖形標示 For i = 1 to Len(S) G = G & "<IMG SRC=" & Mid(S, i, 1) & ".png Align=TextTop>" Next Return G End Function </script>
14
圖形訪客計數器第二版 每一個數字是一個獨立的圖檔,可能因不同圖檔下載情況不同的關係,造成以下現象:
15
NumToPng.apsx 網頁
16
PngCount2.aspx 網頁程式(1) <%@ Import Namespace="System.IO" %>
<HTML> <BODY BGCOLOR=WHITE> <CENTER><H2>PngCount2.aspx -- 圖形訪客計數器第二版 <HR></H2> 您是本站第 <Img Src="NumToPng.aspx?counter=<%=counter%>" Align=TextTop> 位貴賓! </BODY> </HTML> <script Language="VB" runat="server"> Dim counter As Long = 1 ' 宣告一個計數器變數 Sub Page_Load(sender As Object, e As EventArgs) ' 進行鎖定,防止非同步更新 Application.Lock
17
PngCount2.aspx 網頁程式(2) Dim PathName As String = Server.MapPath("counter.txt") If File.Exists( PathName ) Then ' 判斷 counter.txt 是否存在 ' 讀取 counter.txt 檔案中的計數器,然後指定給 counter 變數 Dim sReader As StreamReader sReader = New StreamReader( PathName, Encoding.Default ) Dim S As String S = sReader.ReadLine() If Not S Is Nothing Then counter = CLng( S ) + 1 ' 先加一,再指定給 counter 變數 End If sReader.Close()
18
PngCount2.aspx 網頁程式(3) ' 將計數器的值寫回 counter.txt 檔案
Dim sWriter As StreamWriter sWriter = New StreamWriter( PathName, False, Encoding.Default ) sWriter.Write( CStr(counter) ) sWriter.Flush() sWriter.Close() ' 解除鎖定 Application.UnLock End Sub </script>
19
PngCount2.aspx 網頁
20
NumToPng.aspx 的原始碼(1) <%@ Import Namespace="System.IO" %>
Import Namespace="System.Drawing" %> Import Namespace="System.Drawing.Imaging" %> <script Language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Const PicWidth As Integer = 14 ' 若改變圖檔大小 Const PicHeight As Integer = 19 ' 請修改這兩行敘述 Dim counter As String = Request("counter") Const ThisPixelFormat = PixelFormat.Format24bppRgb Dim bmp As New Bitmap( Len(counter)*PicWidth, PicHeight, ThisPixelFormat ) Dim g As Graphics = Graphics.FromImage(bmp) Dim img As System.Drawing.Image
21
NumToPng.aspx 的原始碼(2) Dim I As Integer, gFile As String
For I = 1 To Len(counter) gFile = Server.MapPath( Mid(counter, I, 1) & ".png") img = System.Drawing.Image.FromFile( gFile ) g.DrawImage( img, New Point(PicWidth*(I-1), 0) ) Next Dim MyStream As New MemoryStream() bmp.Save( MyStream, ImageFormat.Png) MyStream.Seek(0, SeekOrigin.Begin ) Dim Buffer( MyStream.Length ) As Byte MyStream.Read(Buffer, 0, MyStream.Length ) MyStream.Close() Response.BinaryWrite(Buffer) End Sub </script>
22
訪客計數器 Server 版 --使用資料庫來開發
counter.mdb資料庫「計數器」資料表結構如下:
23
counter.mdb 資料庫的「計數器」資料表的資料
24
dbcount.htm 的使用範例(1) <HTML> <BODY BGCOLOR=WHITE>
<H2>使用 Server 版訪客計數器範例<HR></H2> dbcount.aspx 放置於「本機」的 /kjaspx/ch12 目錄 <blockquote> ID=kjwang:<Img Src="/kjaspx/ch12/dbcount.aspx?ID=kjwang" Align=TextTop><P> ID=walter:<Img Src="/kjaspx/ch12/dbcount.aspx?ID=walter" Align=TextTop> </blockquote>
25
dbcount.htm 的使用範例 (2) dbcount.aspx 放置於 <blockquote> ID=kjwang:<Img Src=" Align=TextTop><P> ID=walter:<Img Src=" Align=TextTop> </blockquote> <HR> </BODY> </HTML>
26
dbcount.htm 網頁
27
12-2 廣告迴旋板
28
認識廣告迴旋板
29
AdRotator 廣告迴旋板
30
製作 AdRotator 廣告迴旋板的準備工作--網址
圖片所連結到的網址,也就是當上網者在圖片上按下滑鼠之後,所跳至的網頁。此一欄位可以設定成標準的網際網路網址,例如:
31
製作 AdRotator 廣告迴旋板的準備工作--文字敘述
圖片還沒有下載至瀏覽器之前,圖片外框所顯示的替代性文字,例如:
32
製作 AdRotator 廣告迴旋板的準備工作--加權(1)
加權在此是一個數字,用來表示此一廣告出現的機率,舉例來說,某一廣告迴旋板含有 4 則廣告,每一則廣告的加權都等於 1,那麼每一則廣告的出現率就等於 1÷( ),等於 25%,但如果第一則廣告的加權等於 3,而其他三則廣告的加權都等於 1,則第一則廣告的出現率將等於 3÷( ),等於 50%,而其他廣告的出現率則等於 1÷( ),等於17% 左右。
33
製作 AdRotator 廣告迴旋板的準備工作--加權(2)
「出現率」與「實際出現次數」的差異:上述的廣告出現率 25%(等於 1/4),是指進入網頁無限次之後,平均 4 次會出現 1 次,並不是說每 4 次就一定會出現 1 次,舉例來說,可能在前 4 次沒有出現半次(或前 4 次出現了 2 次),但經過 次之後,出現次數卻是 2500 次左右。
34
每一則廣告所對應的圖檔、網址、文字敘述、及加權
35
AdRotator「排程檔」-- Adrot.xml (1)
<?xml version="1.0" encoding="big5" ?> <Advertisements> <Ad> <ImageUrl>F8315.gif</ImageUrl> <NavigateUrl>ba/vbba6.htm</NavigateUrl> <AlternateText>新觀念的 Visual Basic 6.0 教本/AlternateText> <Impressions>1</Impressions> </Ad> <Ad> <ImageUrl>F8308.gif</ImageUrl> <NavigateUrl>api/vbapi.htm</NavigateUrl> <AlternateText>Visual Basic 6.0與 Windows API 講座</AlternateText> <Impressions>1</Impressions> </Ad>
36
AdRotator「排程檔」-- Adrot.xml (2)
<Ad> <ImageUrl>F8316.gif</ImageUrl> <NavigateUrl>ex/vbex6.htm</NavigateUrl> <AlternateText>Visual Basic 6.0 實戰講座</AlternateText> <Impressions>1</Impressions> </Ad> <Ad> <ImageUrl>F8317.gif</ImageUrl> <NavigateUrl>db/vbdb6.htm</NavigateUrl> <AlternateText>Visual Basic 6.0 資料庫程式設計</AlternateText> <Impressions>1</Impressions> </Ad> <Advertisements>
37
佈置 AdRotator 控制元件 Adrot.aspx <Html> <Body BgColor="White">
<H3>使用 AdRotator 控制元件<HR></H3> <center> <Form runat="server"> <asp:AdRotator id="adrot1" BorderWidth="1" runat=server AdvertisementFile="Adrot.xml" /> </Form> </center><Hr> </Body> </Html>
Similar presentations