亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

ASP跨服務(wù)器上傳文件完美解決

添加時間:2014-9-16 3:59:17  添加: 思海網(wǎng)絡(luò) 

  如果你有兩個空間,一個大而慢,另外一個小而快,或者其中一個不支持FSO,那么跨服務(wù)器上傳文件這個問題就擺在你面前了,下面就是我在解決00001.cn里面的跨服務(wù)器上傳文件的日記,這個問題看似簡單,里面的細節(jié)問題卻是非常有趣

  前提條件,空間都必須支持ASP,上傳文件的服務(wù)器支持FSO,下面的敘述中,sd168.com為存上傳文件的服務(wù)器,00001.cn為網(wǎng)站服務(wù)器,即顯示用戶界面的服務(wù)器...

  實現(xiàn)功能,文件上傳,上傳后在網(wǎng)頁的文本區(qū)域自動加上對于圖片的UBB碼,為了清楚,下面列出所有用到的文件

服務(wù)器 文件名 用途 
sd168.com blog_upfile.asp 接收上傳文件用 
00001.cn blog_add.asp 添加BLOG,上傳文件功能在此出現(xiàn) 
00001.cn blog_upload.asp 上傳文件表單,以iframe的形式嵌在blog_add.asp里 
00001.cn blog_upresult.asp 顯示上傳結(jié)果,作善后工作 
00001.cn blog_upcheck.asp 驗證用戶名與密碼

在發(fā)布BLOG頁面Blog_add.asp增加一個iFrame,調(diào)用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,自然不費吹灰之力想到,文件要傳到另外一個服務(wù)器上,只要把blog_upload.asp里的上傳Form的action頁面指向目標服務(wù)器就行了, 
<form name="form" method="post" action="http://www.sd168.com/blog_UPFILE.ASP
//中間略去 
//提交時把發(fā)布BLOG的按紐disable先,以免沒傳完就時用戶把BLOG發(fā)表了 
<input type="submit" class=button name="Submit" value=" 上 傳 " > 
測試一下,文件上傳成功,那自動加UBB代碼呢... 
http://www.sd168.com/blog_UPFILE.ASP 里加一句js腳本 
<>parent.frmAnnounce.Content.value+=''</>傳上去再測試,錯誤提示"blog_UPFILE.ASP 權(quán)限不夠",既然sd168.com的文件權(quán)限不夠,00001.cn總可以吧,當blog_upfile.asp操作完成時,再調(diào)用一個本服務(wù)器的ASP文件,于是blog_upresult.asp出現(xiàn)了,他負責(zé)善后 
修改blog_upfile.asp,我用C++的習(xí)慣,注釋用//符

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

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

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

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

%> 
blog_upfile.asp接受上傳之前先調(diào)用此文件驗證.下面為代碼,雖然也是使用域名www.ylog.net但此操作在diygame.com的服務(wù)器上執(zhí)行,所以與使用者本地的hosts文件無關(guān) 
<% 
str=getHTTPPage("http://"&servername&"/blog_upcheck.asp?name="&name&"&psw="&password
if str<>"1" then 
response.write "非法用戶~!" 
response.end 
end if 
//兩個操作函數(shù)。非常有用,可以用到別的地方 
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 
%> 
  關(guān)鍵字:ASP、服務(wù)器、網(wǎng)站

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機打開網(wǎng)站