2015-10-13 62 views
0

我寫了一個簡單的聯繫表單腳本,並試圖使用W3School上描述的方法向其添加XSS驗證。不幸的是,它不起作用,就好像我在其中一個字段中輸入「<」然後提交,當我通過電子郵件收到它時,它會顯示爲「<」。PHP XSS驗證不起作用

任何人都可以建議我做錯了什麼?

數據採集部分

$name = $co = $email = $tel = $message = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST"){ 
$name = test_input($_REQUEST['name']); 
$co = test_input($_REQUEST['company']); 
$email = test_input($_REQUEST['email']); 
$tel = test_input($_REQUEST['tel']); 
$message = test_input($_REQUEST['message']); 
} 

數據測試功能

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

非常感謝

回答

0

也許你的電子郵件客戶端配置爲顯示電子郵件的HTML。 htmlspecialchars會將<轉換爲&lt; 嘗試以純文本格式顯示您的電子郵件。

+0

感謝您的建議。我將Outlook設置爲以純文本格式閱讀郵件,但仍顯示「<」符號。 – Tessa

+0

我在您提供的代碼中看不到任何問題。在發送電子郵件之前可能會發生一些重新轉換?你最好使用'$ _POST'而不是'$ _REQUEST'。 – dev0

+0

謝謝,我試過$ _POST和$ _REQUEST,但它有相同的結果,但我認爲你是對的。我認爲發生了什麼事情(從Outlook收到的消息中)是,它將檢索郵件爲HTML,然後將其轉換爲純文本,我想可以導致「<」無論如何都會被轉換。 – Tessa