2012-10-22 101 views
1

我是新來的PHP,我有一個表單,需要獲取信息並通過郵件發送給我。 問題是,有時我收到的郵件只包含一個IP地址,而沒有其他東西。 我嘗試按下「發送」而不輸入任何字段,我收到一封電子郵件,其中包含除問題答案以外的所有內容,所以情況並非如此。 我的問題是爲什麼我會收到只包含IP地址的電子郵件? 謝謝!php郵件發送虛假郵件

<?php 
    $to = "[email protected]"; 
    $subject = "energiebio contact form: {$_POST['ams']['Destination']} "; 
    $from = $_POST['ams']['E-mail']; 
    $valid=1; 
    $message =''; 

    foreach ($_POST['mas'] as $k=>$v){ 
     if (trim($v)=='')$valid=0; 
     $k = str_replace('_',' ',$k); 
     $message .="$k : $v<br>"; 
    } 

    $message .="<hr />IP: {$_SERVER['REMOTE_ADDR']}"; 

    function sndmail($from,$to,$subject,$message){ 
     $headers = "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
     $headers .= "From:".$from ."\r\n"; 
     mail($to, $subject, $message, $headers); 
    } 

    if ($valid=='1') { 
     sndmail($from,$to,$subject,$message); 
     header('Location: http://site.ro/danke.html') ; 
    }else header('Location: http://site.ro/error.html') ; 
?> 

我發現,它是相同的IP,而且我不能得到一個「WHOIS查詢」就可以了相同的:92.85.174.105

+2

我強烈建議使用像[phpMailer](http://code.google.com/a/apache-extras.org/p/phpmailer/)等體面的郵件類,而不是使用php的內置'mail() '功能。 mail()函數有很多問題;使用它並不好。 – SDC

+0

謝謝,我會研究它! – Silviu

+0

我猜'$ _POST ['mas']'是空的。 –

回答

1

我要說的東西,例如谷歌機器人或一個垃圾郵件機器人,正在打你的電子郵件腳本而不使用你的表單。如果你有這樣的HTML:

<form action="postmail.php"> 
<!-- stuff --> 

腳本可以打你的「postmail.php」而不使用發送按鈕。然後,主體內容將爲空,您將收到一封空郵件,其中只包含發件人IP。

+0

HTML看起來像這樣:

可能是因爲它似乎來自同一個IP。 – Silviu

+0

是的,所以腳本可以直接拿起你的「mymail.php」並直接發送一個請求到那個,而不需要在正文內容中指定任何東西。只需在瀏覽器url中放入「mymail.php」並嘗試導航到該文件,或使用命令行工具curl向空的主體發送POST請求到該URL,您就可以測試相同的內容。 – eis

+0

謝謝eis,這是答案的地方,我可以通過在瀏覽器中輸入www.site.ro/mymail.php來複制相同的響應。儘管我收到了幾條錯誤消息,但我收到了空的電子郵件aswel。 – Silviu