Re: [請益] PHP接變數問題

看板PHP作者 (小殘)時間15年前 (2010/05/07 10:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
原po如果是考慮表單被加入額外的欄位而覆蓋原有變數的話 用extract()加prefix就可以了, 例如以下範例 <?php $test = "my_data"; // 原有變數 extract($_POST, EXTR_PREFIX_ALL, "post"); if(isset($_POST['submit'])) { echo $post_data; // data echo $post_test; // hack echo $test; // my_data } ?> <form method="post"> <input type="hidden" value="data" name="data"> <input type="hidden" value="hack" name="test"> <input type="submit" value="submit" name="submit"> </form> ※ 引述《tkdmaf (皮皮快跑)》之銘言: : ※ 引述《chan15 (ChaN)》之銘言: : : 接變數不外乎 : : $xxx = $_POST['xxx'] : : 如果變數有10幾個就要下10幾次 : : 請問各位朋友有比較便捷的寫法嗎? : 先前有人提及用foreach做$$key = $value : 也有提及$key的來源造成的變數異常的情況。 : 這會有安全性的問題(包含sql injetion之類的問題。) : 這麼一來就是得要對$key做處理還有將$value所傳入的字串做安全性的判斷。 : 比如說過濾不該存在的符號,將html字碼轉成普通字元……等等的方法。 : 改一改就長成這個樣子了。如果有更好的方法請指教: : 前一個欄位增加一個隱藏欄位表單。 : <input type="hidden" name="input_code" value="<?=md5("編碼值")?>" /> : $post = $_POST; //有人說不要將$_POST直接放入foreach處理,那就先用變數。 : 要做foreach前得先解編碼值: : if($post["input_code"] == md5("編碼值")){ : unset($post["input_code"]); //因為不需要把他也解進變數,就刪了他。 : foreach($post as $key => $value){ : $$key = desave($value); : } : }else{ : 看你要幹嘛! : } : function desave($value){ : 看你要怎麼處理安全性,將值放入$re_value,最後: : return $re_value; : } : 還有一種方式就是利用action取$get; : <form name="xxxxx" method="post" action="xxxx.php?input_code= : <?=md5("xxxxxx")?>"> : $post = $_POST; : if($_GET["input_code"] == md5("xxxxxx")){ : foreach($post as $key => $value){ : $$key = $desave($value); : } : }else{ : 看你要幹嘛! : } : 因為基本上md5是無法反解的。 : 所以除非對方能猜到你md5給的值不然就一定無法通過程式判斷。 : 這樣多少可稍微避免外來的侵害。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.83.220
文章代碼(AID): #1ButZURi (PHP)
討論串 (同標題文章)
文章代碼(AID): #1ButZURi (PHP)