PHP表單遞交控件名稱含有點(diǎn)號(hào)(.)會(huì)被轉(zhuǎn)化為下劃線(_)的處理方法
更新時(shí)間:2013年01月06日 15:20:08 作者:
做項(xiàng)目的過(guò)程中發(fā)現(xiàn),表單遞交就是不成功,后來(lái)發(fā)現(xiàn)原來(lái)我給控件的名字不規(guī)范導(dǎo)致,控件遞交到后端之后,發(fā)現(xiàn)所有我控件名字中含有.號(hào)的名字,遞交過(guò)之后都會(huì)被轉(zhuǎn)化成下劃線_
最近在做公司項(xiàng)目的時(shí)候,發(fā)現(xiàn)一個(gè)奇怪的問(wèn)題,遞交一個(gè)正常表單,竟然發(fā)現(xiàn)不能正常獲取到遞交的值,這一發(fā)現(xiàn),不免讓我開(kāi)始的時(shí)候一頭霧水,開(kāi)始的時(shí)候一度認(rèn)為是我的服務(wù)有問(wèn)題,不能正常的寫(xiě)入數(shù)據(jù)庫(kù),后來(lái)偵測(cè)SQL語(yǔ)句發(fā)現(xiàn),原來(lái)問(wèn)題竟然出現(xiàn)在獲取數(shù)據(jù)上,獲取到的數(shù)據(jù)竟然都是空的,后來(lái)一調(diào)試發(fā)現(xiàn),原來(lái)遞交到后端的所有變量,都已經(jīng)不是預(yù)期中的變量,竟然被PHP轉(zhuǎn)化了。
提供測(cè)試代碼如下:
<html>
<head>
<title>測(cè)試表單提交</title>
</head>
<body>
<form action="" method="post">
名字:<input type="text" value="test" name="info.name" /><br/>
密碼: <input type="text" value="hahaha" name="info.pwd" /><br/>
QQ: <input type="text" value="961412" name=".info.qq" /><br/>
住址: <input type="text" value="zhejiang" name="info|address" /><br/>
電話: <input type="text" value="123456789" name="1——phone" /><br/>
性別: <input type="radio" name="info_gender" value="1" checked>男 <input type="radio" name="info_gender" value="2">女<br/>
<button type="submit" name="submit" value=""> commit</button>
</form>
</body>
</html>
<?php
if ($_POST) {
echo '<pre/>';
var_export($_POST);
}
?>
代碼實(shí)例1
運(yùn)行之后結(jié)果如下:

圖1
可以看到,所有我在控件中含有的.號(hào),都被后端轉(zhuǎn)化成了_下劃線,為了測(cè)試其他的一些符號(hào),所以做了如上的測(cè)試,至今為止,僅發(fā)現(xiàn)點(diǎn)號(hào)(.)會(huì)被轉(zhuǎn)化為下劃線(_),所以導(dǎo)致在后端我想當(dāng)然的用info.name去訪問(wèn)的時(shí)候,不能發(fā)現(xiàn),因?yàn)樗鋵?shí)已經(jīng)被轉(zhuǎn)化成了info_name。
提供測(cè)試代碼如下:
復(fù)制代碼 代碼如下:
<html>
<head>
<title>測(cè)試表單提交</title>
</head>
<body>
<form action="" method="post">
名字:<input type="text" value="test" name="info.name" /><br/>
密碼: <input type="text" value="hahaha" name="info.pwd" /><br/>
QQ: <input type="text" value="961412" name=".info.qq" /><br/>
住址: <input type="text" value="zhejiang" name="info|address" /><br/>
電話: <input type="text" value="123456789" name="1——phone" /><br/>
性別: <input type="radio" name="info_gender" value="1" checked>男 <input type="radio" name="info_gender" value="2">女<br/>
<button type="submit" name="submit" value=""> commit</button>
</form>
</body>
</html>
<?php
if ($_POST) {
echo '<pre/>';
var_export($_POST);
}
?>
代碼實(shí)例1
運(yùn)行之后結(jié)果如下:

圖1
可以看到,所有我在控件中含有的.號(hào),都被后端轉(zhuǎn)化成了_下劃線,為了測(cè)試其他的一些符號(hào),所以做了如上的測(cè)試,至今為止,僅發(fā)現(xiàn)點(diǎn)號(hào)(.)會(huì)被轉(zhuǎn)化為下劃線(_),所以導(dǎo)致在后端我想當(dāng)然的用info.name去訪問(wèn)的時(shí)候,不能發(fā)現(xiàn),因?yàn)樗鋵?shí)已經(jīng)被轉(zhuǎn)化成了info_name。
相關(guān)文章
解析PHP中empty is_null和isset的測(cè)試
本篇文章是對(duì)PHP中empty is_null和isse的測(cè)試進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06一個(gè)PHP二維數(shù)組排序的函數(shù)分享
二維數(shù)組在PHP開(kāi)發(fā)中經(jīng)常遇到,但是他的排序就不如一維數(shù)組那樣用內(nèi)置函數(shù)來(lái)的方便了,下面為大家詳細(xì)介紹下2014-01-01php實(shí)現(xiàn)的mongoDB單例模式操作類
這篇文章主要介紹了php實(shí)現(xiàn)的mongoDB單例模式操作類,結(jié)合實(shí)例形式分析了php基于單例模式操作MongoDB數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)封裝類相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01用js進(jìn)行url編碼后用php反解以及用php實(shí)現(xiàn)js的escape功能函數(shù)總結(jié)
這次第一次用smarttemplate這個(gè)模板,比smarty小巧了很多,但也有些不方便的地方。2010-02-02使用PHP獲取網(wǎng)絡(luò)文件的實(shí)現(xiàn)代碼
PHP獲取網(wǎng)絡(luò)文件的實(shí)現(xiàn)代碼,其實(shí)就是一個(gè)小偷程序。學(xué)習(xí)php小偷程序的朋友可以參考下。2010-01-01PHP實(shí)現(xiàn)鏈表的定義與反轉(zhuǎn)功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)鏈表的定義與反轉(zhuǎn)功能,結(jié)合實(shí)例形式分析了PHP鏈表的基本定義、添加、移除、遍歷以及兩種反轉(zhuǎn)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06