我有一個html表單,訪問者可以填寫併發送一些信息作爲電子郵件。它發出這樣的:在PHP中,print_r()和mail()會輸出不同的東西,爲什麼?
$body = print_r($_POST, true);
mail ($to, $subject, $body, $headers);
當他們寫abc'def我得到ABC \'高清
這是什麼額外\
?我如何防止它?
我有一個html表單,訪問者可以填寫併發送一些信息作爲電子郵件。它發出這樣的:在PHP中,print_r()和mail()會輸出不同的東西,爲什麼?
$body = print_r($_POST, true);
mail ($to, $subject, $body, $headers);
當他們寫abc'def我得到ABC \'高清
這是什麼額外\
?我如何防止它?
由於有魔術引號。請參閱here。
他們不輸出不同的東西 - $_POST
超全球已經有反斜槓。
,因爲你有magic quotes開啓這是最有可能,但是,您可以去像這樣:
if (get_magic_quotes_gpc())
{
$new_text = stripslashes($text);
}
現在$new_text
應該正常輸出。
反斜槓是一個轉義字符 - 它可以讓解析器知道您不希望以PHP能夠理解的正常方式使用單引號。如果您想在輸出中刪除它們,請使用stripslashes方法。
string stripslashes (string $str)
IMO,他應該只是禁用魔術引號。這些檢查會污染代碼,並且沒有理由讓服務器啓用魔術引號。 – Artefacto 2010-06-17 17:29:36
@Artefacto:這是真的,他應該簡單地禁用它們。一個好的決定是將它們從未來的版本中刪除以及:) – Sarfraz 2010-06-17 17:32:00
@Artefacto如果OP要爲他無法控制的環境構建可移植代碼,那麼只有在PHP 6出現之前,才能使用這些類型的檢查。 – 2010-06-17 17:32:35