日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
探討PHP變量解析順序如何獲取提交數(shù)據(jù)

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

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

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

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

問(wèn)題找到了,但是又有新的疑問(wèn),相同的變量名,為什么是COOKIE覆蓋了POST而不是相反呢?于是終于要來(lái)到標(biāo)題講的variables_order設(shè)置項(xiàng)了,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”,會(huì)導(dǎo)致 PHP 完全忽略環(huán)境變量,cookies 和 server 變量,并用 POST 方法的變量覆蓋 GET 方法的同名變量。

結(jié)論:

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

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


名稱欄目:探討PHP變量解析順序如何獲取提交數(shù)據(jù)
標(biāo)題路徑:http://www.dlmjj.cn/article/cdsdioj.html