我只是想要一個更優雅的自動化解決方案來進行表單驗證。在PHP.net上,我從SQL注入頁面發現了一個很酷的class
腳本。這裏是代碼(修改)。假設要通過我的$_POST
數組並應用驗證功能。array_map/array_walk保持報告無效回調,未找到和/或未定義
class secure
{
function secureSuperGlobalPOST($v)
{
$_POST[$v] = htmlspecialchars(stripslashes($_POST[$v]));
$_POST[$v] = str_ireplace("script", "blocked", $_POST[$v]);
$_POST[$v] = mysql_escape_string($_POST[$v]);
return $_POST[$v];
}
function secureGlobals()
{
// This was originally array_walk; I'm just trying to figure out what's up...
array_map('secureSuperGlobalPOST', $_POST);
}
}
// This last line is attempt at using it. This was not provided with the code.
secure::secureGlobals();
於是我得到這個錯誤:
_「警告:array_map()預計參數1是一個有效的回調,功能 'secureSuperGlobalPOST' 未找到或c無效的函數名稱:\ WAMP \ www \ mysite \ register.php on line 19「_
我一直在尋找永遠,但我不明白爲什麼它不會有效,沒有找到(它在同一類),或爲什麼它會是無效的名字(它是一樣的確切名字!)。
這也有效。我猜自己是一個引用自己的關鍵詞,不知道。謝謝! – Tarik 2010-08-16 18:47:51
self用於引用聲明方法的類。 – stillstanding 2010-08-16 18:58:33
再次感謝,我甚至不認爲我會想到在變量中捕獲返回值,我忘了!我不明白靜態方法的東西。如果有可能簡短,可以簡單比較一下。 – Tarik 2010-08-17 05:08:21