2015-10-17 97 views
0

我有一个非常奇怪的问题我在我的网站上有一个表格,用户填写完毕,一切正常,验证和工作,这是非常可靠的,但是我继续收到这些电子邮件中的2个每天:PHP继续收到空白邮件

http://www.cccccc.com.au收到新的查询。请在下面找到详细信息并跟进:

Email : 
Phone Number : 
Event Type: 
Number Guests: 
State: 
Suburb: 
IP ADDRESS:173.245.50.130 
Message: 

为什么我为什么要这样?

我跟踪了IP,它来自美国,这很奇怪,因为我们的网站是针对澳大利亚的,我们的大部分流量都来自谷歌AdWords。 但是,IP的ISP是cloudflare,这是我们的托管服务提供商....?

enter image description here

任何想法,为什么/我怎么让这些空白?

这里是我的脚本....漂亮纳迪克但它可以给我们留言

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$mobile = $_POST['mobile']; 
$eventType = $_POST['eventType']; 
$nrGuests = $_POST['nrGuests']; 
$state = $_POST['state']; 
$suburb = $_POST['suburb']; 
$msg = $_POST['msg']; 
$ip = $_SERVER['REMOTE_ADDR']; 


    $to_email  = "[email protected], [email protected]"; 

    $suburb  = filter_var($_POST["suburb"], FILTER_SANITIZE_STRING); 
    $subject  = "You Have a New Booking!"; 
    //Add booking INFO here; 
    $message  = "A new Enquiry has been received from http://www.fingerfoods.com.au. Please find details below and follow up:"; 

    //email body 
    $message_body = $message."\r\n\r\n".$name."\r\nEmail : ".$email."\r\nPhone Number : ". $mobile."\r\nEvent Type: ".$eventType."\r\nNumber Guests:".$nrGuests."\r\nState: ".$state."\r\nSuburb:".$suburb."\r\nIP ADDRESS:".$ip."\r\nMessage:".$msg; 

    //proceed with PHP email. 
    $headers = 'From: '.$name.'' . "\r\n" . 
    'Reply-To: '.$email.'' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    $send_mail = mail($to_email, $subject, $message_body, $headers); 
    if($send_mail) 
    { 
    echo '<h1 class="page-header">Enquiry Successfully submitted</h1>'; 
} 
else{ 
    echo'<h1 class="page-header" style="color:RED">OOPS...SOMETHING WENT WRONG, PLEASE TRY AGAIN!</h1>'; 
} 
     ?> 

这可能听起来有点愚蠢的,但任何想法,为什么我会收到此类空白EMAILS?如上所述

+0

因为您不检查输入数据的空白吗?由于搜索机器人访问您的页面和页面被执行? –

+0

@u_mulder即使javascript被禁用,您也无法提交表单,而且它与来自美国的IP相同,我们只针对澳大利亚,但Ip的isp来自cloudflare,这是我们的托管服务提供商......? –

+0

为什么我无法提交?如果这是你的完整脚本 - 比我只能访问这个脚本并执行它。谁阻止我? –

回答

0

首先,$_SERVER['REMOTE_ADDR']给出了将请求发送到Web服务器的IP地址。这通常是访问者的地址,但就您的情况而言,听起来好像在拦截请求的Web服务器之前存在某种代理,因此对于Web服务器来说,它看起来好像请求源自那里。其次,也许你没有获取参数值,因为你发送GET请求而不是POST,你可以使用$_REQUEST(获取GET,POST和COOKIE varialbe的内容),而不是区分GET和POST要求。

for more info. about requests kinds

而且最重要的事情,你必须检查输入值,除非他们是不是空不发送表单值!

+0

即时通讯,但这是一个没有ANWSER清楚你可以看到我使用'POST'请求​​ –

+0

不,我看到你试图从POST请求获取内容(你不会看到在URL中的参数),如果表单发送GET(您将在url中看到参数),您将无法通过POST请求获取内容。因此,请尝试使用$ _REQUEST,如下所示: $ name = $ _REQUEST ['name']; $ email = $ _REQUEST ['email']; –

+0

我强烈不同意你的建议! –