PHP中實現接收多個name相同但Value不相同表單數據實例
最近在一個詢盤留言管理系統(tǒng)時候一個問題,留言的前臺的表單當中出現很多name值相同的input框,這些框是由用戶填寫的各不相同的值,現在要遷移到php平臺上,而且要求不能改變前臺的任何表單(因為用到這個表單的網站實在是太多了,所以必須要考慮轉移的兼容性,就連form的提交地址也不能變,必須是提交到某個asp頁面上)。form提交地址問題,可以用偽靜態(tài)或其它方法直接解決。由于以前的系統(tǒng)是由asp做的,asp在處理相同name值的表單的時候,是直接用逗號把前臺提交的值連起來,而php卻不一樣,它接收相同的name的input的時候,是最后一個把前面的值給覆蓋掉了。那么,怎么樣在不改寫前臺的基礎上,做到能接受到所有name相同的input的值呢?當時腦子里浮現兩個想法,第一個是讓這個input的name以數組的方式傳到后臺,然后作出處理,但是很快被否定掉了,因為這樣也必須要改動前臺的代碼,讓
<input type="text" name="a" />改成<input type="text" name="a[]" />。第二個想法是php配置當中,有沒有類似的設置可以讓php像asp這樣處理相同name值的表單,查了半天資料,也沒有找到。
最后發(fā)現,只能退而求其次,稍微改動一下前臺,把name換成數組,幸好這樣去用的網站并不多。那么接下來就是后臺處理數據的問題了,前臺的name有一部分改了,這時候就會出現一種情況,php不知道由form提交過來的是字符串還是數組,那么怎么樣去做呢,我的辦法是寫一個函數:
function input_treat($input){ if(gettype($input)=="string"){ return htmlentities(trim($input),ENT_QUOTES); }else if(gettype($input)=="array"){ $nd=""; foreach($input as $v){ $nd .=htmlentities(trim($v),ENT_QUOTES)." "; } return $nd; }else{ return false; } }
用input_treat()函數去處理GET或者POST過來的值,如果是字符串,那么把字符串處理一下返回,如果是數組,那么遍歷這個輸入,用空格把數組的每個元素連起來,然后返回整個連起來的字符串。
這樣,整個需求就實現了,缺點是對一部分使用相同name表單的網站必須要更改一下數據,如果你有更好的方法,歡迎和我留言溝通。
- PHP 表單提交給自己
- php 表單數據的獲取代碼
- php表單轉換textarea換行符的方法
- php提交表單時判斷 if($_POST[submit])與 if(isset($_POST[submit])) 的區(qū)別
- 用PHP的超級變量$_POST獲取HTML表單(HTML Form) 數據
- php中一個完整表單處理實現代碼
- PHP判斷表單復選框選中狀態(tài)完整例子
- ThinkPHP表單自動提交驗證實例教程
- PHP獲取表單所有復選框的值的方法
- thinkPHP實現表單自動驗證
- php提交表單發(fā)送郵件的方法
- PHP代碼實現表單數據驗證類
- 解決php表單重復提交實現方法
- 表單提交錯誤后返回內容消失問題的解決方法(PHP網站)
- php實現表單多按鈕提交action的處理方法
- php防止用戶重復提交表單
- php表單提交實例講解
相關文章
PHP函數篇詳解十進制、二進制、八進制和十六進制轉換函數說明
中文字符編碼研究系列第一期,PHP函數篇詳解十進制、二進制、八進制和十六進制互相轉換函數說明,主要掌握各進制轉換的方法,以應用于實際開發(fā)2011-12-12Smarty foreach控制循環(huán)次數的實現詳解
在smarty中數組是經常會用到的,循環(huán)遍歷數組用 section 或者 foreach ,如何得到數組長度或者判斷一個數組個數呢2013-07-07PHP+MySql+jQuery實現的"頂"和"踩"投票功能
這篇文章主要為大家詳細介紹了PHP+MySql+jQuery實現的"頂"和"踩"投票功能,具有一定的參考價值,感興趣的朋友可以參考一下2016-05-05