深入研究表單提交方式 GET POST

2021-03-31 08:56:31 字數 1761 閱讀 7342

深入研究表單提交方式: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...