ASP 程式設計中20個非常有用的例子(一)
1.如何用Asp判斷你的網站的虛擬實體路徑
答:使用Mappath方法:< %= Server.MapPath(/)% >
2.我如何知道使用者所使用的瀏覽器?
答:使用the Request object方法:
<%
strBrowser=Request.ServerVariables(HTTP_USER_AGENT)
If Instr(strBrowser,MSIE) < > 0 Then
Response.redirect(formSIEOnly.htm)
Else
Response.redirect(ForAll.htm)
End If
%>
3.如何計算每天的平均重複造訪人數
答:解決方法
< % startdate=DateDiff(d,Now,01/01/1990)
if strdate< 0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) % >
顯示結果
< % response.write(avgvpd) % >
that is it.this page have been viewed since November 10,1998
4.如何顯示隨機圖象
< % dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic=graphix/randompics/&p&.gif
% >
顯示
< img src=< %=dpic% > >
5.如何回到先前的頁面
答:< a href=< %=request.serverVariables(Http_REFERER)% > >preivous page< /a >
或用圖片如:< img src=arrowback.gif target='_blank'>伺服器運行的,如果可以在伺服器顯示一個對話框,那麼你只好等有人按了確定之後,你的程式才能繼續執行,而一般伺服器不會有人守著,所以微軟只好禁止這個函數,並胡亂告訴你( 呵呵) 沒有權限。但是ASP和客戶端腳本結合倒可以顯示一個對話框,as follows:
<%yourVar=測試對話框%>
小雨在
11.有沒有辦法保護自己的原始碼,不給人看到
答:可以去下載一個微軟的Windows Script Encoder,它可以對asp的腳本和客戶端javascript/vbscript腳本進行加密。 。 。不過客戶端加密後,只有ie5才能執行,伺服器端腳本加密後,只有伺服器上安裝有script engine 5(裝一個ie5就有了)才能執行。
12.怎樣才能將query string 從一個asp 檔傳送到另一個?
答:前者檔案加入下句: Response.Redirect(second.asp? & Request.ServerVariables(QUERY_STRING))
13.global.asa檔案總是不起作用?
答:只有web目錄設定為web application, global.asa才有效,且一個web application的根目錄下global.asa才有效。 IIS4可以使用Internet Service Manager設定application setting 怎麼才能使得htm檔案如同asp檔案一樣可以執行腳本程式碼?
14.怎樣才能使得htm檔如同asp檔一樣可以執行腳本程式碼?
答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >選單屬性-〉主目錄- > 應用程式設定(Application Setting)- > 點選按鈕設定- > app mapping - >點選按鈕Add - > executable browse選擇/WINNT/SYSTEM32/INETSRV/ASP.DLL EXTENSION 輸入htm method exclusions 輸入PUT.DELETE全部確定即可。但值得注意的是這樣對htm也要由asp.dll處理,效率將會降低。
15.如何註冊組件
答:有兩種方法。
第一種方法:手動註冊DLL 這種方法從IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令列方式下來執行,進入到包含有DLL的目錄,並輸入:regsvr32 component_name.dll 例如c:/temp/regsvr32 AspEmail.dll 它會把dll的特定資訊註冊入伺服器中的登錄中。然後這個元件就可以在伺服器上使用了,但是這個方法有一個缺陷。當使用這種方法註冊完畢元件後,該元件必須要對應的設定NT的匿名帳號有權限執行這個dll。特別是一些元件需要讀取註冊表,所以,這個註冊元件的方法只是使用在伺服器上沒有MTS的情況下,要取消註冊這個dll,使用:regsvr32 /u aspobject.dll example c:/temp/regsvr32 /u aneiodbc.dll
第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但它提供了巨大的改進。 MTS允許你指定只有有特權的使用者才能夠存取元件,大大提高了網站伺服器上的安全性設定。在MTS上註冊組件的步驟如下:
1) 開啟IIS管理控制台。
2) 展開transaction server,右鍵點選pkgs installed然後選擇new package。
3) 點選create an empty package。
4) 給該包命名。
5) 指定administrator帳號或則使用interactive(如果伺服器經常是使用administrator 登陸的話)。
6) 現在使用右鍵點擊你剛建立的那個包下面展開後的components。選擇new then component。
7) 選擇install new component 。
找到你的.dll檔案然後選擇next到完成。
要刪除這個對象,只要選擇它的圖標,然後選擇delete。
附註:特別要注意第二種方法,它是用來調試自己編寫組件的最佳方法,而不必每次都需要重新啟動機器了。
16. ASP與Access資料庫連接:
<%@ language=VBscript%>
<%
dim conn,mdbfile
mdbfile=server.mappath(資料庫名稱.mdb)
set conn=server.createobject(adodb.connection)
conn.open driver={microsoft access driver (*.mdb)};uid=admin;pwd=資料庫密碼;dbq=&mdbfile
%>
17. ASP與SQL資料庫連線:
<%@ language=VBscript%>
<%
dim conn
set conn=server.createobject(ADODB.connection)
con.open PROVIDER=SQLOLEDB;DATA SOURCE=SQL伺服器名稱或IP位址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱
%>
建立記錄集物件:
<%
set rs=server.createobject(adodb.recordset)
rs.open SQL語句,conn,3,2
%>
18. SQL常用指令使用方法:
(1) 資料記錄篩選:
sql=select * from 資料表where 欄位名=欄位值order by 欄位名[desc]
sql=select * from 資料表where 欄位名稱like '%欄位值%' order by 欄位名稱[desc]
sql=select top 10 * from 資料表where 欄位名order by 欄位名[desc]
sql=select * from 資料表where 欄位名in ('值1','值2','值3')
sql=select * from 資料表where 欄位名稱between 值1 and 值2
(2) 更新資料記錄:
sql=update 資料表set 欄位名稱=欄位值where 條件式
sql=update 資料表set 欄位1=值1,欄位2=值2 …欄位n=值n where 條件式
(3) 刪除資料記錄:
sql=delete from 資料表where 條件表達式
sql=delete from 資料表(將資料表所有記錄刪除)
(4) 新增資料記錄:
sql=insert into 資料表(字段1,字段2,字段3 …) valuess (值1,值2,值3 …)
sql=insert into 目標資料表select * from 來源資料表(把來源資料表的記錄加入到目標資料表)
(5) 資料記錄統計函數:
AVG(欄位名稱) 得出一個表格欄平均值
COUNT(*|欄位名) 資料行數的統計或對某一欄有值的資料行數統計
MAX(欄位名稱) 取得一個表格欄位最大的值
MIN(欄位名稱) 取得一個表格欄位最小的值
SUM(欄位名稱) 將資料欄的值相加
引用以上函數的方法:
sql=select sum(字段名) as 別名from 資料表where 條件表達式
set rs=conn.excute(sql)
用rs(別名) 取得統的計值,其它函數運用同上。
(5) 資料表的建立與刪除:
CREATE TABLE 資料表名稱(欄位1 類型1(長度),欄位2 類型2(長度) … )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 資料表名稱(永久性刪除一個資料表)
19. 記錄集物件的方法:
rs.movenext 將記錄指標從目前的位置向下移一行
rs.moveprevious 將記錄指標從目前的位置向上移一行
rs.movefirst 將記錄指標移到資料表第一行
rs.movelast 將記錄指標移到資料表最後一行
rs.absoluteposition=N 將記錄指標移到資料表第N行
rs.absolutepage=N 將記錄指標移到第N頁的第一行
rs.pagesize=N 設定每頁為N筆記錄
rs.pagecount 根據pagesize 的設定傳回總頁數
rs.recordcount 傳回記錄總數
rs.bof 傳回記錄指標是否超出資料表首端,true表示是,false為否
rs.eof 傳回記錄指標是否超出資料表末端,true表示是,false為否
rs.delete 刪除目前記錄,但記錄指標不會向下移動
rs.addnew 新增記錄到資料表末端
rs.update 更新資料表記錄
20 Recordset物件方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset 物件可以透過Source屬性來連接Command物件。 Source參數可以是一個Command物件名稱、一段SQL指令、一個指定的資料表名稱或一個Stored Procedure。假如省略這個參數,系統則採用Recordset物件的Source屬性