首頁 >後端開發 >php教程 >PHP基礎之POST與GET

PHP基礎之POST與GET

WBOY
WBOY原創
2016-08-08 09:19:081139瀏覽

post 與 get區別

重點:

*.Post傳輸資料時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
*.Post傳輸的資料量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024位元組.
*.Post顧名思義,就是為了將資料傳送到伺服器段,Get就是為了從伺服器段取得資料。而Get之所以也能傳送數據,只是用來設計告訴伺服器,你到底需要什麼樣的數據。 Post的訊息作為http請求的內容,而Get是在Http頭傳輸的。

詳細說明:

1、Get 透過URL 請求來傳遞使用者的數據,將表單內各欄位名稱與其內容以成對的字串連接,置於action 屬性所指程式的url 後, 資料都會直接顯示在url 上,就像使用者點擊一個連結一樣;

      Post 方法透過HTTP post 機制,將表單內各字段名稱與其內容放置在HTML 表頭(header)內一起傳送給伺服器端交由action 屬性能所指的程式處理,程式會透過標準輸入(stdin)方式,將表單的資料讀出並加以處理

2、 Get 方式需要使用 Request.QueryString 來取得變數的值。

       Post 方式以 Request.Form 存取提交的內容。
3、 Get 方式傳輸的資料量非常小,一般限制在2 KB 左右,執行效率卻比Post 方法好;

       Post方式傳遞的資料量相對較大,它是等待伺服器來讀取數據,也有位元組限制,這是為了避免對伺服器用大量資料進行惡意攻擊。
        建議:除非你肯定你提交的數據可以一次性提交,否則請盡量用Post 方法

4、 Get 方式提交數據,會帶來安全問題,表單提交建議使用Post 方法;(比如登陸頁面,通過Get方式提交資料時,使用者名稱和密碼出

       現在URL 上,如果頁面可以被快取或其他人​​可以存取客戶這台機器,就可以從歷史記錄取得該使用者的帳號和密碼)

     Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時候,會彈出對話框。建議:出於安全性考慮,最好使用 Post 提交資料

5、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字元集。
6、Get是Form的預設方法。

HTTP協定裡面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應四種基本操作: 
GET用來取得資源
POST用來新資源(也可以用於更新資源)
PUT用來更新資源
DELETE用來刪除資源。

PHP透過post/get取得資料會自動轉義

依照伺服器的不同配置,透過post、get取得資料時可能會出現一些類似',"等特殊符合會被轉義。可以不對輸入和輸出資料庫的字串資料作addslashes()和stripslashes()的操作,資料也會正常顯示。使用stripslashes()去掉多餘的反斜線。 addslashes()並未將反斜線一起寫入資料庫,只是幫助mysql完成了sql語句的執行。 .in  ,如果裡面的magic_quotes_gpc  配置被打開那就是magic_quotes_gpc = on   懂點php的人都知道。

 SELECT *

 FROM tbltable_users WHERE userid=admin AND password = 'admin' LIMIT 0,1

 如果攻擊者在username處,輸入:admin 1 =
 如果攻擊者在username處,輸入:admin 1 = 1 * FROM table_users WHERE userid=admin OR 1 =1 # AND password = 'admin' LIMIT 0,1

下面就可以進行注入了.

在php.ini 中把display_errors 選項設為display_errors = display_ .

magic_quotes_runtime
        如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase
        如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

由于不同服务器的配置不同,需要在代码中用get_magic_quotes_gpc() 检测服务器配置。

<span>1</span><span>if</span>(<span>isset</span>(<span>$_POST</span>['c'<span>])){
</span><span>2</span><span>$s</span> = <span>$_POST</span>['c'<span>];
</span><span>3</span><span>if</span>(<span>get_magic_quotes_gpc</span><span>())
</span><span>4</span><span>$s</span> = <span>stripslashes</span>(<span>$s</span>);<span>//</span><span>stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
</span><span>5</span><span>//do something</span><span>6</span> }

以上就介绍了PHP基础之POST与GET,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn