[請益] function抓arg一直出錯…搞不懂問題出在哪

看板PHP作者 (Lin4h)時間17年前 (2008/09/27 22:12), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
有問題的function是這樣: function prot(){ /** SQL injection protection */ $count = func_num_args(); for($i = 0;$i < $count;$i++){ if(ereg("(['])+|([--])+",func_get_arg($i))){ //只要字串出現有'或--就直接中斷,die出錯誤提示 die("input error, please try again"); } } return true; } 一執行就給我噴這個error..... func_get_arg(): Can't be used as a function parameter. = =Google很久了,挖到的都是在classes裡頭用才會出這個狀況(但我這又不是)。 有人有碰過類似的狀況嗎? ----------------------------- 手上還有另一個可正常執行的function 也有用到get_arg,但這個正常: function ConfirmData(){ //做資料submit之後驗證用的,在參數中放條件跟錯誤訊息就可。 $count = func_num_args(); if($count < 1) { return false; }elseif($count == 2){ return func_get_arg(0) == true ? func_get_arg(1) : null; }else{ //兩個以上的條件時,最後一個參數以array型式放錯誤訊息 $msgs = func_get_arg($count - 1); for($i = 0;$i < $count - 1;$i++){ if(func_get_arg($i)==true) return $msgs[$i]; } return null; } } -- 學習是一下子,使用是一輩子,不要為了一下子害了一輩子 by 嘸蝦米輸入法發明人 劉重次 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.138.137

09/27 23:48, , 1F
錯誤訊息應該是指不能放在函式的參數內
09/27 23:48, 1F

09/27 23:49, , 2F
因為不知道傳回的參數型態
09/27 23:49, 2F

09/27 23:49, , 3F
如果是參數是陣列會掛吧
09/27 23:49, 3F
= =上面沒有陣列,下面有…反倒下面是正常的... ※ 編輯: alexsh 來自: 220.132.138.137 (09/28 10:12)

09/28 12:33, , 4F
先試試只輸出 func_get_arg($i) 看看是否有問題?
09/28 12:33, 4F
= =還是噴一樣的錯誤…怪怪 ※ 編輯: alexsh 來自: 220.132.138.137 (09/28 13:30)

09/28 14:16, , 5F
上面放在ereg函式裡面當參數,下面沒有啊
09/28 14:16, 5F

09/28 14:17, , 6F
func_get_arg回傳值是不確定的不能放在函數裡
09/28 14:17, 6F

09/28 14:20, , 7F
你改成 $strArg=func_get_arg($i);ereg('',$strArg)
09/28 14:20, 7F

09/28 15:57, , 8F
= =搞懂了,謝謝。
09/28 15:57, 8F
文章代碼(AID): #18tZytWC (PHP)
文章代碼(AID): #18tZytWC (PHP)