人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

跨服務器上傳文件圓滿處理

跨服務器上傳文件圓滿處理

更新時間:2022-06-26 文章作者:未知 信息來源:網絡 閱讀次數:

如果你有兩個空間,一個大而慢,另外一個小而快,或者其中一個不支持FSO,那么跨服務器上傳文件這個問題就擺在你面前了,下面就是我在解決ylog.net里面的跨服務器上傳文件的日記,這個問題看似簡單,里面的細節問題卻是非常有趣
前提條件,空間都必須支持ASP,上傳文件的服務器支持FSO,下面的敘述中,diygame.com為存上傳文件的服務器,ylog.net為網站服務器,即顯示用戶界面的服務器...
實現功能,文件上傳,上傳后在網頁的文本區域自動加上對于圖片的UBB碼,為了清楚,下面列出所有用到的文件

服務器 文件名 用途
diygame.com blog_upfile.asp 接收上傳文件用
ylog.net blog_add.asp 添加BLOG,上傳文件功能在此出現
ylog.net blog_upload.asp 上傳文件表單,以iframe的形式嵌在blog_add.asp里
ylog.net blog_upresult.asp 顯示上傳結果,作善后工作
ylog.net blog_upcheck.asp 驗證用戶名與密碼

在發布BLOG頁面Blog_add.asp增加一個iFrame,調用blog_upload.asp進行上傳操作
<iframe border="0" frameBorder="0" frameSpacing="0" height="25" marginHeight="0" marginWidth="0" noResize scrolling="no" width="100%" vspale="0" src="blog_upload.asp"></iframe>

如果你玩過ASP,自然不費吹灰之力想到,文件要傳到另外一個服務器上,只要把blog_upload.asp里的上傳Form的action頁面指向目標服務器就行了,
<form name="form" method="post" action="http://www.diygame.com/blog_UPFILE.ASP"
//中間略去
//提交時把發布BLOG的按紐disable先,以免沒傳完就時用戶把BLOG發表了
<input type="submit" class=button name="Submit" value=" 上 傳 " onclick="parent.document.frmAnnounce.Submit.disabled=true">
測試一下,文件上傳成功,那自動加UBB代碼呢...
在http://www.diygame.com/blog_UPFILE.ASP 里加一句js腳本
<script>parent.frmAnnounce.Content.value+='[img]http://www.diygame.com/'+FileName+'[/img]'</script>傳上去再測試,錯誤提示"blog_UPFILE.ASP 權限不夠",既然diygame.com的文件權限不夠,ylog.net總可以吧,當blog_upfile.asp操作完成時,再調用一個本服務器的ASP文件,于是blog_upresult.asp出現了,他負責善后
修改blog_upfile.asp,我用C++的習慣,注釋用//符

servername="www.ylog.net" //標志服務器名
//檢查來源,是否為自己指定的服務器,
if not instr(1,Request.ServerVariables("http_Referer"),servername,1)=8 then
response.write "非法來源~!"
response.end
end if
//檢查文件大小,類型,等,這些代碼略去,網上很多關于FSO組件的介紹
...
//上傳代碼,略去
....
//成功后轉向的URL,就是執行上傳操作的地址,把信息當作msg傳過去
url="http://"&servername&"/blog_upresult.asp?msg="
if 上傳成功 then//把腳本傳過去,因為JS中的+號不能被傳遞.因此使用server.urlencode函數,此腳本在ylog.net上才有權限運行
url=url+ "<script>parent.frmAnnounce.Content.value"&server.urlencode("+")&"='[img]http://www.diygame.com/"&FileName&"[/img]'</script>"
//把文件名也傳送過去,以便存數據庫備查
response.redirect url+"上傳成功&filename="&FileName
end if

下面就是blog_upresult.asp上的代碼了,很簡單

//傳成功了,自然要把已經diable的提交BLOG按紐恢復
<script>
parent.frmAnnounce.Submit.disabled=false;
</script>
//還有就是把傳過來的信息顯示出來
response.write request("msg")
//如果request("filename")<>"" 寫入數據庫代碼省略
response.write "[ <a href=# onclick=history.go(-1)>重新上傳</a> ]"

看上去perfect了,但如人家得到了你的源碼的話,輕而易舉把你的上傳服務器當成網絡硬盤用....
只要把hosts文件里的中一句 127.0.0.1 www.ylog.net
然后相應寫一個提交文件用的blog_upload.asp就行了,
頭疼ing,代碼是不能允許有半點安全漏洞的,驗證的域名能被欺騙,
那就驗證上傳者的用戶名與密碼,diygame.com怎么去ylog.net的數據庫上去查詢用戶名與密碼是否正確呢
這就少不了xmlhttp
先在ylog.net上做一個blog_upcheck.asp,內容非常簡單,對傳的用戶名與密碼驗證,成功則輸出1,失敗則輸出0
<%
name=request("name")
psw=request("psw")
checkstr(name)//濾掉SQL字符
checkstr(psw))//濾掉SQL字符
if 從數據庫檢查用戶名=成功 then
response.write 0
else
response.write 1
end if

%>
blog_upfile.asp接受上傳之前先調用此文件驗證.下面為代碼,雖然也是使用域名www.ylog.net但此操作在diygame.com的服務器上執行,所以與使用者本地的hosts文件無關
<%
str=getHTTPPage("http://"&servername&"/blog_upcheck.asp?name="&name&"&psw="&password)
if str<>"1" then
response.write "非法用戶~!"
response.end
end if
//兩個操作函數。非常有用,可以用到別的地方
Function getHTTPPage(URL)
Set HTTPReq = Server.createobject("Microsoft.XMLHTTP")
HTTPReq.Open "GET", URL, False
HTTPReq.send
If HTTPReq.readyState <> 4 Then Exit Function
getHTTPPage = bytes2BSTR(HTTPReq.responseBody)
Set HTTPReq = Nothing
End Function

Function bytes2BSTR(vIn)
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = ""
For I = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, 1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + 1, 1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I + 1
End If
Next
bytes2BSTR = strReturn
End Function
%>
做到這個地方,終于可以松口氣了,寫的很亂,希望能勉強看懂。。。
如果你有更好的方法或者有什么看不懂的地方,歡迎來我的BLOG交流,網址在上面已經出現過很多遍

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 四会市| 建宁县| 射洪县| 于都县| 泾阳县| 贵德县| 清水河县| 遵化市| 黄龙县| 自治县| 榆中县| 汉川市| 四平市| 江孜县| 龙南县| 正安县| 塘沽区| 邵阳县| 沾化县| 赤水市| 班戈县| 勃利县| 岳阳市| 衡东县| 会东县| 延安市| 米林县| 嘉禾县| 平昌县| 美姑县| 博乐市| 大同县| 沐川县| 正阳县| 内乡县| 乌拉特后旗| 怀远县| 屏东县| 射洪县| 台南县| 新化县|