top
Loading...
使用ASP編程常見問題解答
問題:如何保護自己的ASP源代碼不泄露?

答:下載微軟的windows script encoder,對ASP的腳本和客戶端javascript、vbscript腳本進行加密。客戶端腳本加密后,只有ie5以上的版本才能執行,服務器端腳本加密后,只有服務器上安裝有script engine 5(裝ie5即可)才能解釋執行。


問題:為什么global.asa文件總是不起作用?

答:只有把global.asa文件放在web發布目錄某個站點的根目錄下它才有效,放在發布目錄的某個子目錄下不起作用。另外,也可以使用iis4的internet service manager把某個子目錄設置為站點。

問題:為什么ASP文件總不解釋執行?

答:在iis服務器上沒有給ASP文件以腳本解釋的權限,所以ASP文件沒有被web服務器作為腳本代碼進行解釋執行,而被當成一般頁面文件了。建議在web發布目錄中建立一個ASP目錄,把所有ASP文件存放在此目錄下,把ASP目錄賦予腳本解釋權限。

問題:ASP文件中使用response.redirect(url)時導致錯誤“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,請問如何解決?

答:此錯誤為http標題在寫入頁內容之后,寫到了客戶瀏覽器中。任何http標題的修改必須在寫入頁內容之前進行,解決的方法為在ASP文件最開頭加入response.buffer = true,在文件的結尾加入response.flush。

問題:為什么session有時候會消失?

答:session很像臨時的cookie,只是其信息保存在服務器上(客戶機上保存的是sessionid)。session變量消失有幾種可能,如:使用者的瀏覽器不接受cookie,因為session依賴于cookie才能跟蹤用戶;session在一段時間后過期了,缺省為20分鐘,如果希望更改,可以通過設置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout選項來改變session的超時時間,也可以在ASP腳本中設定,如session.timeout=60,可設定超時時間為60分鐘。

問題:怎樣才能知道訪問者的一些信息?

答:通過request.servervariables(″http—user—agent″)獲得訪問者瀏覽器的類型;request.servervariables(″remote—addr″)可獲得訪問者的ip地址;而訪問者的語言環境可通過request.servervariables(″http—accept—language″)來獲得。

問題:怎樣才能將query string從一個ASP文件傳送到另一個ASP文件?

答:前一個ASP文件加入下列代碼:response.redirect(″second.ASP?″&request.servervariables(″query—string″))即可。

問題:ASP中如何控制cookies?

答:若想寫入cookies可用:response.cookies(″待寫入的coookies名稱″)=待寫入數據。讀取cookies則使用:讀取數據=request.cookies(″待讀的cookies名稱″)。

注意,寫入cookies的response.cookies程序段必須放在〈html〉標記之前,且不可以有任何的其它html代碼。另外,cookies中必須使用expires設定有效期,cookies才能真正地寫入客戶端硬盤中,否則只是臨時的。

問題:怎樣實現用ASP發送郵件?

答:用戶需裝上windows nt option pack的smtp service功能。實現代碼如下:

〈%

set mail = server.createobject(″cdonts.newmail″)

mail.to =″abc@xxx.com″

mail.from =″yourmail@xxx.com″

mail.subject =″主題″

mail.body =″e-mail內容″

mail.send

%〉

問題:ASP與數據庫連接一定要在服務器端設置dsn嗎?

答:不一定,ASP與服務器的數據庫連接有兩種方法,一種為通過dsn建立連接,另一種不用dsn建立連接。通過dsn連接數據庫需要服務器的系統管理員在服務器的控制面板中的odbc中設置一個dsn。如果沒有在服務器上設置dsn,只要知道數據庫文件名(比如access、paradox、foxpro的數據庫)或者數據源名(如sqlserver的數據庫)就可以訪問數據庫,直接提供連接所需的參數即可。

連接代碼如下:

set conn=server.createobject(″adodb.connection″)

connpath=″dbq=″&server.mappath(″yourtable.mdb″)

conn.open″driver={microsoft access driver (.mdb)};″&connpath

set rs=conn.execute(″selectfrom authors″)

問題:如何從一頁到另一頁傳遞變量?

答:用hidden表單類型來傳遞變量。

〈form method=″post″action=″mynextpage.ASP″〉

〈% for each item in request.form %〉

〈input namee=″〈%=item%〉″type=″hidden″

value=″〈%=server.htmlencode(request.form(item)) %〉″〉

〈% next %〉

〈/form〉

用session來保存變量。

〈%session(″bh″)= request.form (″bh″)%〉

用querystring保存變量。

〈a herf=″action.ASP?bh=10″〉查詢〈/a〉

〈%request. querystring (″bh″)%〉

問題:如何用ASP實現在線人數統計?

答:在線人數是指一個時段內的訪客人數統計,時間的長短是由設計者設定的。

在這個時段內,各個不同ip訪問本站點的總數,就是當前的線上人數。在ASP中,使用session對象來實現統計,實現代碼如下:

golobal.asa文件

〈script language=″vbscript″runat=″server″〉

sub session—onstart

application(″online″)=application(″online″)+1

end sub

sub session—onend

application(″online″)=application(″online″)-1

end sub

sub application—onstard

application(″online″)=0

end sub

sub application—onend

application(″online″)=0

end sub

〈/script〉

online.ASP文件內容

〈% tmp=application(″online″)

tmp=cstr(tmp)

dim disp(20)

dim images(20)

dbbits=len(tmp)

for i= 1 to dbbits

disp(i)=left(right(tmp,i),i-(i-1))

next

for i=dbbits to 1 step -1

images(i)=″〈img src=″&″http://xxxx.com.cn/pic″&″/″&disp(i)&″.gif〉″

response.write″document.write(′″&images(i)&″′);″

next %〉

問題:ASP程序運行的時間如何計算?

答:確定ASP程序的執行時間的代碼如下所示:

〈%

dim t1,t2

t1=now()

′被檢測的ASP代碼

t2=now()

response.write″運行這段ASP代碼用了″&cstr(cdbl((t2-t1)*24*60*60))&″秒″

%〉

北斗有巢氏 有巢氏北斗