2012-01-19 23 views
1

這是通過Ajax發送的。這裏的JS:爲什麼mail()函數發送一個主體爲「0」的電子郵件?

$.ajax({ 
    url: objCommon.ajax, 
    type: 'POST', 
    data: {type:'feedback', msg:$('.commonsFeedbackDiv').text(), url:window.location.href}, 
    success: function(data){ 
     console.log(data); 
     if(data.search('ajaxError') === -1){ 
      console.log('sent'); 
     }else if(data.search('msg')){ 
      alert('Please enter a message.'); 
     } 
    } 
}); 

和處理請求的PHP:

global $user; 
echo $_POST['msg']; 
echo $_POST['url']; 
if(isset($_POST['msg']) && $_POST['msg'] !== ''){ 
    mail('[email protected]', 'Commons Feedback', 'url: ' + $_POST['url'] + $_POST['msg'], 'From: ' . $user->mail); 
}else{ 
    echo 'ajaxError - no msg'; 
} 

您可以在我登錄到控制檯的響應success()回調函數看,而且這種反應是由在PHP代碼開始附近的兩個echo語句的後面。結束於控制檯的字符串是正確的;它包含消息和URL。但是,我收到的實際電子郵件僅包含內容中的數字0。

任何想法爲什麼?

+0

而且不要忘了* *的sanitize您輸入! http://xkcd.com/327/ – Aif

+0

我是 - 爲了這篇文章而刪除它。 – maxedison

回答

7

在php中連接字符串的運算符是.而不是+。加號進行的數值此外,這反過來將字符串轉換成數值0

因此,你需要改變

'url: ' + $_POST['url'] + $_POST['msg'] 

'url: ' . $_POST['url'] . $_POST['msg'] 
+0

很好找,這個答案+1。 – Oldskool

+0

謝謝。我覺得它會是這樣的小事。混合我的JS和PHP :) – maxedison

相關問題