一個顯示原代碼的asp程式
我們都知道asp這一類的伺服器端處理的程式,其好處之一就是只向用戶端輸出標準的Html流。因此可以起到向客戶隱藏細節的作用。也就是說當我們在瀏覽器中鍵入asp程式的網址後只能看見標準的Html檔案,而不能看見asp的內容。但有時,例如在一個asp的教學網站,我們有必要顯示asp檔案的內容,或者你願意將你的原代碼與人享,通過一個程式將代碼顯示出來。
下面是我編寫的一個asp程式,view_code.asp,它提供兩種提交方式:
一種是用表格提交,即你知道了該源檔案的物理地址(類似於:c:\asp_source\test.asp的形式)。
一種是採用get方式提交(類似於:< a href="view_code.asp?code_path= < %=server.mappath(request.servervariables("PATH_INFO"))% >&cgi_type=asp" >
點擊此處查看原代碼< /a >)。另外它還支援兩種cgi指令碼,一種是asp,一種是php。
程式碼片段:
< %
on error resume next
’忽略程式執行中的錯誤,在程式的最後統一處理。
% >
< %
function rt_min(num1,num2)
’該子程式用於返回兩數中不等於零的最小數。
if num1=0 and num2=0 then
rt_min=-1
elseif num1=0 then
rt_min=num2
elseif num2=0 then
rt_min=num1
elseif num1
rt_min=num1
else
rt_min=num2
end if
end function
% >
< %
function line_check(strline,cgi_type)
’該子程式用於檢查輸入段中是否包含有"< %、% >、< script >或< /script的特殊字元
dim cgi_flag
if cgi_type="php" then
cgi_flag="?"
else
cgi_flag="%"
end if
’定義的cgi_flag用於代表php和asp的不同標識符
line_check=0
itemp=0
ipos=instr(strline,"<"&cgi_flag)
if rt_min(ipos,itemp)=ipos then
itemp=ipos
line_check=1
end if
ipos=instr(strline,cgi_flag&" >")
if rt_min(ipos,itemp)=ipos then
itemp=ipos
line_check=2
end if
ipos=instr(1,strline,"<"&"script",1)
if rt_min(ipos,itemp)=ipos then
itemp=ipos
line_check=3
end if
ipos=instr(1,strline,"<"&"/script",1)
if rt_min(ipos,itemp)=ipos then
itemp=ipos
line_check=4
end if
end function
% >