Re: [請益] PHP接變數問題
※ 引述《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: 59.104.130.106
推
05/06 22:33, , 1F
05/06 22:33, 1F
→
05/06 22:34, , 2F
05/06 22:34, 2F
→
05/06 22:36, , 3F
05/06 22:36, 3F
→
05/06 22:36, , 4F
05/06 22:36, 4F
→
05/06 22:41, , 5F
05/06 22:41, 5F
→
05/06 22:41, , 6F
05/06 22:41, 6F
如果你的程式有一個變數假設叫$test好了!
如果有人塞了一個表單:
<input type="hidden" name="test" value="我要惡搞你的變數!">
然後傳送到你的網站。
你想想$test這個變數會發生什麼事吧!
而且input_code只是用來判斷表單的來源是否合法。
desave()是另行處理$value的安全性內容。
※ 編輯: tkdmaf 來自: 59.104.130.106 (05/06 22:50)
推
05/06 22:49, , 7F
05/06 22:49, 7F
→
05/06 22:49, , 8F
05/06 22:49, 8F
→
05/06 22:51, , 9F
05/06 22:51, 9F
→
05/06 22:52, , 10F
05/06 22:52, 10F
→
05/06 22:52, , 11F
05/06 22:52, 11F
→
05/06 22:52, , 12F
05/06 22:52, 12F
推
05/06 22:52, , 13F
05/06 22:52, 13F
→
05/06 22:53, , 14F
05/06 22:53, 14F
→
05/06 22:54, , 15F
05/06 22:54, 15F
關於LPH66提到的input_code自己寫。
老實說變這樣就很好玩了。
$input_code = md5($_POST["input_code"]);
if($input_code == md5(md5("XXXX"))){
xxxxxx
}
並沒有規定md5不能用二次!
※ 編輯: tkdmaf 來自: 59.104.130.106 (05/06 22:56)
→
05/06 22:58, , 16F
05/06 22:58, 16F
→
05/06 22:58, , 17F
05/06 22:58, 17F
→
05/06 23:02, , 18F
05/06 23:02, 18F
→
05/06 23:03, , 19F
05/06 23:03, 19F
→
05/06 23:05, , 20F
05/06 23:05, 20F
→
05/06 23:05, , 21F
05/06 23:05, 21F
<form method="post" action="showmdcode">
<input type="hidden" name="mdword" value="<?=md_code("ABCDEFG",10)?>" />
<input type="submit" value="送出" />
</form>
<?php
function md_code($word,$time = 1){
for ($i = 0 ;$i < $time ;$i++){
$word = md5($word);
}
return $word;
}
?>
那就請你們親自跑跑看這個東西吧!
看看你用原始碼看到的是什麼東西。
※ 編輯: tkdmaf 來自: 59.104.130.106 (05/06 23:06)
→
05/06 23:06, , 22F
05/06 23:06, 22F
→
05/06 23:07, , 23F
05/06 23:07, 23F
→
05/06 23:07, , 24F
05/06 23:07, 24F
→
05/06 23:09, , 25F
05/06 23:09, 25F
→
05/06 23:09, , 26F
05/06 23:09, 26F
→
05/06 23:10, , 27F
05/06 23:10, 27F
→
05/06 23:11, , 28F
05/06 23:11, 28F
→
05/06 23:11, , 29F
05/06 23:11, 29F
→
05/06 23:12, , 30F
05/06 23:12, 30F
→
05/06 23:13, , 31F
05/06 23:13, 31F
→
05/06 23:14, , 32F
05/06 23:14, 32F
→
05/06 23:27, , 33F
05/06 23:27, 33F
→
05/06 23:27, , 34F
05/06 23:27, 34F
推
05/06 23:29, , 35F
05/06 23:29, 35F
→
05/06 23:30, , 36F
05/06 23:30, 36F
→
05/06 23:30, , 37F
05/06 23:30, 37F
→
05/06 23:32, , 38F
05/06 23:32, 38F
→
05/07 00:03, , 39F
05/07 00:03, 39F
→
05/07 01:21, , 40F
05/07 01:21, 40F
→
05/07 06:52, , 41F
05/07 06:52, 41F
→
05/07 06:53, , 42F
05/07 06:53, 42F
→
05/07 10:49, , 43F
05/07 10:49, 43F
推
05/07 12:07, , 44F
05/07 12:07, 44F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章