PHP表單遞交控件名稱含有點(diǎn)號(hào)(.)則會(huì)被轉(zhuǎn)化為下劃線(_)
摘要: 做項(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)題,不能正常的寫入數(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);
- }
- ?>
復(fù)制代碼 代碼實(shí)例1
運(yùn)行之后結(jié)果如下:
1.png (12.35 KB, 下載次數(shù): 120)
下載附件
2011-12-14 21:27 上傳
圖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。 |