偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

探討PHP變量解析順序如何獲取提交數(shù)據(jù)

開發(fā) 后端
PHP變量解析順序可以幫助我們實現(xiàn)獲取自己想要的提交數(shù)據(jù)。希望大家可以在這篇文章中獲得自己想要的知識,提高自己的學(xué)識。

PHP的學(xué)習(xí)并不能局限于書本上的那幾段概念就能完全掌握。還需要我們不斷的從實踐中去深入了解。下面就介紹一下PHP變量解析順序的實踐。故事從一個有點詭異的BUG開始,后臺一個使用頻率不是很高的廣告提交功能有時候會莫名其妙的發(fā)生提交的鏈接網(wǎng)址出錯的問題。#t#

由于提交后并沒有告知該次提交的鏈接URL,所以這個BUG一直活到了今天。然而并不是每一次提交都會出現(xiàn)這個BUG,幾次測試后發(fā)現(xiàn)只有在連續(xù)多次提交時發(fā)生。由于提交的表單比較復(fù)雜,分幾部分錄入,于是懷疑在中間環(huán)節(jié)發(fā)生錯誤。

排錯的過程先是在各個過程中var_dump($_REQUEST),于是連續(xù)第二次提交時找到出錯環(huán)節(jié),在***個表單提交到第二個表單的過程中,$_REQUEST數(shù)組發(fā)生改變。到這里,我們有必要再看一下$_REQUEST數(shù)組:

手冊上講包含經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的變量,因此該數(shù)組并不值得信任。以此將var_dump($_REQUEST)分解成var_dump($_POST),var_dump($_GET),var_dump($_COOKIE),問題就比較清晰了,原來為了便于在多個頁面表單間保存值,試用了COOKIE,雖然沒有設(shè)置expire項的情況下SESSION結(jié)束時COOKIE變銷毀,但是如果在一次會話中連續(xù)提交多個廣告,表單POST的值變會被之前保存在COOKIE的值覆蓋,而之所以只有部分出錯,在于保存到COOKIE的時候COOKIE變量名都加了前綴,除了url這個變量還是使用相同的變量名。

問題找到了,但是又有新的疑問,相同的變量名,為什么是COOKIE覆蓋了POST而不是相反呢?于是終于要來到標(biāo)題講的variables_order設(shè)置項了,php.ini中原文如下:

This directive describes the order in which PHP registers GET, POST, Cookie,
Environment and Built-in variables (G, P, C, E & S respectively, often
referred to as EGPCS or GPC). Registration is done from left to right, newer
values override older values.

意思是該設(shè)置描述PHP解析變量順序,包括$_GET,$_POST,$_COOKIE,$_ENV ,$_SERVER 數(shù)組,
解析順序從左到右,后解析新值覆蓋舊值。默認(rèn)設(shè)定為EGPCS(Environment,GET,POST,Cookie,Server)。
如果將其設(shè)為“GP”,會導(dǎo)致 PHP 完全忽略環(huán)境變量,cookies 和 server 變量,并用 POST 方法的變量覆蓋 GET 方法的同名變量。

結(jié)論:

就像手冊上講的,$_REQUEST是個并不值得信任的數(shù)組。為了盡量避免類似問題,在獲取提交值是應(yīng)明確使用$_POST或$_GET數(shù)組。

特殊情況下可以通過調(diào)整variables_order設(shè)置,使自己總是能得到想要獲取的提交數(shù)據(jù)。

責(zé)任編輯:曹凱 來源: 百度博客
相關(guān)推薦

2009-12-10 15:00:20

PHP獲取checkb

2009-12-01 18:11:03

PHP表單重復(fù)提交

2009-11-23 10:31:25

PHP使用JSON

2009-11-30 18:59:52

PHP數(shù)組排序

2009-11-30 18:46:51

PHP字符串顛倒順序

2009-11-27 15:24:48

PHP遞歸效率

2009-12-02 09:21:04

PHP數(shù)據(jù)過濾

2009-12-01 15:48:12

提高PHP運行效率

2009-11-25 16:29:08

PHP刪除數(shù)組元素

2022-05-05 10:10:28

DNS網(wǎng)絡(luò)

2009-12-01 19:08:18

PHP外部變量

2009-11-30 13:04:38

PHP獲取Oracle

2009-12-11 17:52:21

PHP獲取博客數(shù)據(jù)

2009-11-23 17:16:54

PHP獲取IP

2010-06-11 09:46:55

UML順序圖

2013-04-26 11:26:00

2010-07-21 09:38:15

PHP緩存技術(shù)

2009-11-30 15:58:13

PHP數(shù)學(xué)函數(shù)

2011-02-22 14:10:25

PHPXML

2009-12-01 10:00:51

PHP判斷字符串是否為
點贊
收藏

51CTO技術(shù)棧公眾號