使用ASP編程經(jīng)常見(jiàn)問(wèn)題回答
發(fā)表時(shí)間:2023-08-14 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]問(wèn)題:如何保護(hù)自己的ASP源代碼不泄露? 答:下載微軟的windows script encoder,對(duì)ASP的腳本和客戶端javascript、vbscript腳本進(jìn)行加密。客戶端腳本加密后,只有...
問(wèn)題:如何保護(hù)自己的ASP源代碼不泄露? 答:下載微軟的windows script encoder,對(duì)ASP的腳本和客戶端javascript、vbscript腳本進(jìn)行加密。客戶端腳本加密后,只有ie5以上的版本才能執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝ie5即可)才能解釋執(zhí)行。
問(wèn)題:為什么global.asa文件總是不起作用?答:只有把global.asa文件放在web發(fā)布目錄某個(gè)站點(diǎn)的根目錄下它才有效,放在發(fā)布目錄的某個(gè)子目錄下不起作用。另外,也可以使用iis4的internet service manager把某個(gè)子目錄設(shè)置為站點(diǎn)。問(wèn)題:為什么ASP文件總不解釋執(zhí)行?答:在iis服務(wù)器上沒(méi)有給ASP文件以腳本解釋的權(quán)限,所以ASP文件沒(méi)有被web服務(wù)器作為腳本代碼進(jìn)行解釋執(zhí)行,而被當(dāng)成一般頁(yè)面文件了。建議在web發(fā)布目錄中建立一個(gè)ASP目錄,把所有ASP文件存放在此目錄下,把ASP目錄賦予腳本解釋權(quán)限。問(wèn)題:ASP文件中使用response.redirect(url)時(shí)導(dǎo)致錯(cuò)誤“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,請(qǐng)問(wèn)如何解決?答:此錯(cuò)誤為http標(biāo)題在寫(xiě)入頁(yè)內(nèi)容之后,寫(xiě)到了客戶瀏覽器中。任何http標(biāo)題的修改必須在寫(xiě)入頁(yè)內(nèi)容之前進(jìn)行,解決的方法為在ASP文件最開(kāi)頭加入response.buffer = true,在文件的結(jié)尾加入response.flush。問(wèn)題:為什么session有時(shí)候會(huì)消失?答:session很像臨時(shí)的cookie,只是其信息保存在服務(wù)器上(客戶機(jī)上保存的是sessionid)。session變量消失有幾種可能,如:使用者的瀏覽器不接受cookie,因?yàn)閟ession依賴于cookie才能跟蹤用戶;session在一段時(shí)間后過(guò)期了,缺省為20分鐘,如果希望更改,可以通過(guò)設(shè)置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout選項(xiàng)來(lái)改變session的超時(shí)時(shí)間,也可以在ASP腳本中設(shè)定,如session.timeout=60,可設(shè)定超時(shí)時(shí)間為60分鐘。問(wèn)題:怎樣才能知道訪問(wèn)者的一些信息?答:通過(guò)request.servervariables(″http—user—agent″)獲得訪問(wèn)者瀏覽器的類型;request.servervariables(″remote—addr″)可獲得訪問(wèn)者的ip地址;而訪問(wèn)者的語(yǔ)言環(huán)境可通過(guò)request.servervariables(″http—accept—language″)來(lái)獲得。問(wèn)題:怎樣才能將query string從一個(gè)ASP文件傳送到另一個(gè)ASP文件?答:前一個(gè)ASP文件加入下列代碼:response.redirect(″second.ASP?″&request.servervariables(″query—string″))即可。問(wèn)題:ASP中如何控制cookies?答:若想寫(xiě)入cookies可用:response.cookies(″待寫(xiě)入的coookies名稱″)=待寫(xiě)入數(shù)據(jù)。讀取cookies則使用:讀取數(shù)據(jù)=request.cookies(″待讀的cookies名稱″)。注意,寫(xiě)入cookies的response.cookies程序段必須放在〈html〉標(biāo)記之前,且不可以有任何的其它html代碼。另外,cookies中必須使用expires設(shè)定有效期,cookies才能真正地寫(xiě)入客戶端硬盤(pán)中,否則只是臨時(shí)的。問(wèn)題:怎樣實(shí)現(xiàn)用ASP發(fā)送郵件?答:用戶需裝上windows nt option pack的smtp service功能。實(shí)現(xiàn)代碼如下:〈%set mail = server.createobject(″cdonts.newmail″)mail.to =″abc@xxx.com″mail.from =″yourmail@xxx.com″mail.subject =″主題″mail.body =″e(cuò)-mail內(nèi)容″mail.send%〉問(wèn)題:ASP與數(shù)據(jù)庫(kù)連接一定要在服務(wù)器端設(shè)置dsn嗎?答:不一定,ASP與服務(wù)器的數(shù)據(jù)庫(kù)連接有兩種方法,一種為通過(guò)dsn建立連接,另一種不用dsn建立連接。通過(guò)dsn連接數(shù)據(jù)庫(kù)需要服務(wù)器的系統(tǒng)管理員在服務(wù)器的控制面板中的odbc中設(shè)置一個(gè)dsn。如果沒(méi)有在服務(wù)器上設(shè)置dsn,只要知道數(shù)據(jù)庫(kù)文件名(比如access、paradox、foxpro的數(shù)據(jù)庫(kù))或者數(shù)據(jù)源名(如sqlserver的數(shù)據(jù)庫(kù))就可以訪問(wèn)數(shù)據(jù)庫(kù),直接提供連接所需的參數(shù)即可。連接代碼如下:set conn=server.createobject(″adodb.connection″)connpath=″dbq=″&server.mappath(″yourtable.mdb″)conn.open″driver={microsoft access driver (.mdb)};″&connpathset rs=conn.execute(″selectfrom authors″)問(wèn)題:如何從一頁(yè)到另一頁(yè)傳遞變量? 答:用hidden表單類型來(lái)傳遞變量。〈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來(lái)保存變量!%session(″bh″)= request.form (″bh″)%〉用querystring保存變量!碼 herf=″action.ASP?bh=10″〉查詢〈/a〉〈%request. querystring (″bh″)%〉問(wèn)題:如何用ASP實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)?答:在線人數(shù)是指一個(gè)時(shí)段內(nèi)的訪客人數(shù)統(tǒng)計(jì),時(shí)間的長(zhǎng)短是由設(shè)計(jì)者設(shè)定的。在這個(gè)時(shí)段內(nèi),各個(gè)不同ip訪問(wèn)本站點(diǎn)的總數(shù),就是當(dāng)前的線上人數(shù)。在ASP中,使用session對(duì)象來(lái)實(shí)現(xiàn)統(tǒng)計(jì),實(shí)現(xiàn)代碼如下: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文件內(nèi)容〈% 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://www.okasp.com/techinfo/″&″http://xxxx.com.cn/pic″&″/″&disp(i)&″.gif〉″response.write″document.write(′″&images(i)&″′);″next %〉問(wèn)題:ASP程序運(yùn)行的時(shí)間如何計(jì)算?答:確定ASP程序的執(zhí)行時(shí)間的代碼如下所示:〈%dim t1,t2t1=now()′被檢測(cè)的ASP代碼t2=now()response.write″運(yùn)行這段ASP代碼用了″&cstr(cdbl((t2-t1)*24*60*60))&″秒″%〉(出處:賽迪網(wǎng))