此代碼,例如將無法逃脫數據庫的註釋的字符串:
if ($_POST['comment']) {
$comment = mysql_real_escape_string(htmlentities($_POST['comment_txt']));
$comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'")
or die;
}
但是這一次將:
if ($_POST['comment']) {
$comment_p = $_POST['comment_txt'];
$comment = mysql_real_escape_string(htmlentities($comment_p));
$comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'")
or die;
}
爲什麼?爲什麼我不能逃避$ _POST值?爲什麼我必須爲$ _POST定義新的$變量才能轉義它?這是安全鉗。我會在某個時候轉向PDO,但目前我陷入了舊的mysql API。
是啊,對不起,我在這裏出現打印錯誤。現在編輯代碼。謝謝。 –
它也適用於'$ _POST' ..我總是直接在'$ _POST'上使用這個函數,在我的代碼中似乎沒有問題,我想可能是因爲'mysql',一旦用'mysqli'嘗試 – phpfresher