上使用cleanInput()我有以下代碼。我想要做的是清理任何標記的_POST輸入並遍歷_POST中的信息的foreach循環,但我有似乎沒有工作,因爲我認爲$ post_loop回來空,我不是確定這是爲什麼。 $ save變量分配正確。在_POST
$save = cleanInput($_POST["save"]);
$post_loop = cleanInput($_POST);
$obs_loop;
foreach ($post_loop as $key=>$value) {
if ($match = ereg('[0-9].*', $key)) {
list($obsid, $action) = explode("_", $key);
if ($save == "Send Final Response to CDO") {
$save = 'final';
} else if ($save == "Save Choices") {
$save = 'save';
}
$query = "LOCK TABLES obs_responses WRITE, obs WRITE";
$result = mysql_query($query) or die("Locking Failed". mysql_error());
if ($action != 'problem' && $action != 'const_narr' && $action != 'acnonects' && $action != 'gt2spec') {
$upd_query = $db->prepare("update obs_responses set $action = '$value' where obsID = $obsid");
if (!$upd_query->execute()) { die("UPDATE failed"); }
} else if ($action == 'problem' || $action == 'const_narr' || $action == 'acnonects' || $action == 'gt2spec') {
$value = addslashes($value);
$prob_query = $db->prepare("update obs set $action = '$value' where obsID = $obsid");
if (!$prob_query->execute()) { die("UPDATE of problem failed"); }
}
}
乾淨的輸入功能看起來像:
function cleanInput($invalue) {
$outvalue = trim($invalue);
$outvalue = stripslashes($outvalue);
$outvalue = htmlspecialchars($outvalue);
return $outvalue;
}
我們怎麼知道'cleanInput()'是幹什麼的? – rtfm
ereg:警告這個函數在PHP 5.3.0中被取消,而在PHP 7.0.0中被取消。和mysql_ *以及 – rtfm
cleanInput()是專爲字符串而不是陣列 - 看起來像一個壞主意,不管 – rtfm