使用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發佈目錄中建立一個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 = "[email protected]"
mail.From = "[email protected]"
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=/newasp/article/UploadPic/200688/20068814137836.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)) & "秒"
%>
答:微軟的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發佈目錄中建立一個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 = "[email protected]"
mail.From = "[email protected]"
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=/newasp/article/UploadPic/200688/20068814137836.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)) & "秒"
%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.