深入研究表單提交方式:get/post
hackfan
本文平台:windows 2000 professional + apache 1.3.17 + perl 5.6.1 + inter*** explorer 5.00.2920.0000
accept-language: zh-**
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (***patible; msie 5.01; windows nt 5.0)
host: localhost:8080
connection: keep-alive
這個請求是我們通過這個html**發出的:
這個請求已經超出了我們研究的範圍,我們只研究其中的第一行。其中,第乙個"get"說出了提交的方式,是以get方式提交的;中間的就是提交給伺服器上哪個程式,前面一部分"/cgi-bin/tech/method.cgi"就是我們html的form中action的內容,而後面的"get=get"就是html的form中,input的內容:我們發現ie已經把這個表單的內容轉換成特定格式了。在perl中,通過$get=$env獲得以get傳送的資料。
我們再看乙個以post方式提交的表單的請求:
post=post
同樣給出html:
我們發現其中的資料跑到了最下面。在perl中,通過read(stdin,$post,$env)獲得以post傳送的資料。我記得get傳送資料最多只能1024位元組,而post好像很大很大!
思考:如果我有這麼一段html**,它將會出現什麼問題呢?
這個**在很多程式上可能用到過,但是大多數人不會好好的想一想,究竟哪些內容是以get傳送的,哪些內容是以post傳送的。我們看看它的請求是什麼:
post=post
哈!原來是以post傳送的。但是,你一定發現了有一部分資料放在了第一行,就是和get的情況一樣的。其實這個例子很典型,是post和get混發!
不相信你在perl中,用read(stdin,$post,$env)和$get=$env看看,到底哪個裡面有"get=get"這個資料。
html部分:
perl部分:
#!c:/perl/bin/perl.exe
$|=1;
print "content-type:text/html/n/n";
print "傳送方式:$env
/n";
if(read(stdin,$post,$env))
if($get=$env)
$method="post";
for($i=0;$i<=1;$i++)=$value;
}$method="get";
}$method="post";
for($i=0;$i<=1;$i++))=$$method
/n";
}print "
/n";
$method="get";
}exit;
####**結束####
好了,我要說的是,搞這個研究究竟有什麼意義呢?
意義是:讓你知道,使用者提交的資料哪些是用post方式,哪些使用get方式的!
其實我上面那段perl**已經包括了很多的技術。你通過閱讀就可以知道%get裡面放的是用get方式提交的,%post同理!
作者blog:http://blog.csdn.***/hackfan/
對於無副檔名的php程式的研究
深入研究表單提交方式:get/post
flex Bindable深入研究
bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...
URLRequest深入研究
urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...
深入研究AsyncTask
asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...