解答|問題 1.防止使用者直接存取頁面(防止自製表單提交,直接通過連結訪問)
function checkPrePage()
url=request.ServerVariables("HTTP_REFERER")
url=trim(replace(url,"http://",""))
url=trim(left(url,len(request.ServerVariables("SERVER_NAME"))))
if url<>trim(request.ServerVariables("server_name")) then
response.Write("請通過正當的方法訪問本網站")
response.End()
end if
end function
2.通過一下的兩個函數可以實現圖片,文字的同時提交處理。
Function BinaryToString(str)
strto = ""
for i=1 to lenb(str)
if AscB(MidB(str, i, 1)) > 127 then
strto = strto & chr(Ascb(MidB(str, i, 1))*256+Ascb(MidB(str, i+1, 1)))
i = i + 1
else
strto = strto & Chr(AscB(MidB(str, i, 1)))
end if
next
BinaryToString=strto
End Function
function gainformdata(n)
dim formsize,formdata,divider,datastart,dataend
redim mydata(n-1)
formsize = Request.TotalBytes
formdata = Request.BinaryRead(formsize)
for i=1 to n
bncrlf = chrB(13) & chrB(10)
divider = leftB(formdata,clng(instrB(formdata,bncrlf))-1)
datastart = instrB(formdata,bncrlf & bncrlf)+4
dataend = instrB(datastart+1,formdata,divider) - datastart-2
mydata(i-1) = midB(formdata,datastart,dataend)
formdata=rightB(formdata,clng(formsize-instrB(datastart+1,formdata,divider))+1)
formsize=lenB(formdata)
next
gainformdata=mydata
end function
Demo:
a.htm:
<form name="form1" method="post" action="b.asp" enctype="multipart/form-data">
<textarea name="txt"></textarea>
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
</form>
b.asp:
'連結資料庫
data=gainfromdata(2)
rs("txt")=binarytostring(data(0))
rs("img").appendchunk=data(1)
3.彈出提示資訊 , 確定 與 取消 怎麼做的
onclick="{if(confirm('確定刪除選定的紀錄嗎?')){this.document.inbox.submit();return true;}return false;}"
4.組合查詢的最佳化,謝謝
sql = "select * from book where bname like '%" & txtbname.Text & "%' and bauthor like '%" & txtauthor.Text & "%' and bpublish like '%" & txtpublish.Text & "%' and bdescription like '%" & txtdescription.Text & "%' order by bookid desc"
組合查詢,有是四個組合條件,這樣寫是不是效率比較低,我該怎麼最佳化一下呢?
謝謝。
分析,在SQL中,用LIKE是比較費時間的,所以最好是少用。
同時 ,四個TEXT框,輸入條件是,一定會有沒有輸入的條件的時候,就會出現 LIKE "%"的情況,其實這種情況下就等於這個條件沒有。
所以,把產生SQL語句的代碼多寫些,
Dim WhereStr as string
if txtbname.Text<>"" then
WhereStr="bname like '%" & txtbname.Text & "%'"
ELSE IF ....
.....
ENDIF
這樣是一個機率的問題,如果四個全輸入的話,是一樣的,但如果只輸入一個的問,速度會比你的快些!
sql = "select * from book where "
If txtbname.Text <> "" Then
sql = sql & "bname like '%" & txtbname.Text & "%'"
ElseIf txtauthor.Text <> "" Then
sql = sql & "bauthor like '%" & txtauthor.Text & "%'"
ElseIf txtpublish.Text <> "" Then
sql = sql & "bpublish like '%" & txtpublish.Text & "%'"
ElseIf txtdescription.Text <> "" Then
sql = sql & "bdescription like '%" & txtdescription.Text & "%' "
End If
5.如何禁止重新整理
<SCRIPT LANGUAGE="JavaScript">
document.onkeydown = function() {
if(event.keyCode==116) {
event.keyCode=0;
event.returnValue = false;
}
}
document.oncontextmenu = function() {event.returnValue = false;}
</SCRIPT>
頁面已經禁止重新整理
6.sql server 用:sql = "update reg set dealtime=getdate() where id= " & request.querystring("id")
因為 SQL SERVER裡沒有 now() 這個函數,而是用 getdate() 取代了
所以你的會報錯.
ACCESS沒有這個函數:)
只有date()和now()
7.連結其他資料庫的方法(*.dbf,*.txt,excel,foxpro等) ----收藏
2002-10-30 18:41:05 瀏覽次數:145
'連結dbf檔案
<%
' 建立Connection 對象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Visual FoxPro Driver};"
SourceType = "SourceType=DBF;"
DBPath = "SourceDB=" & Server.MapPa