2012-12-28 24 views
1

我在我的网站上有一个基本的申请表格,它使用$_SERVER['REMOTE_ADDR']来包含提交表格的用户的IP地址。

我在表单处理器脚本中使用了以下内容。

// Create database object and connect to database. 
$db = new Database($db_host, $db_username, $db_password, $db_name); 
$db->connect(); 

// Collect POST data 
$merchant_data['ip_address'] = $_SERVER['REMOTE_ADDR']; 
$merchant_data['first_name'] = isset($_POST['first_name']) ? $_POST['first_name'] : ''; 
$merchant_data['last_name'] = isset($_POST['last_name']) ? $_POST['last_name'] : ''; 
$merchant_data['email_address'] = isset($_POST['email']) ? $_POST['email'] : ''; 
$merchant_data['phone_number'] = isset($_POST['phone']) ? $_POST['phone'] : ''; 
$merchant_data['customer_notes'] = isset($_POST['comments']) ? $_POST['comments'] : ''; 
$merchant_data['plan_name'] = isset($_POST['plan_name']) ? $_POST['plan_name'] : ''; 
$merchant_data['estimated_monthly_volume'] = $_SESSION['estimated_monthly_volume']; 
$merchant_data['interested_in'] = isset($_POST['interested_in']) ? $_POST['interested_in'] : ''; 
$merchant_data['additional_equipment_interest'] = isset($_POST['additional_equipment_interest']) ? serialize($_POST['additional_equipment_interest']) : ''; 
$additional_equipment_interest = isset($_POST['additional_equipment_interest']) ? $_POST['additional_equipment_interest'] : array(); 
$merchant_data['website_id'] = 1; 

// Add new record in database. 
$merchant_app_record_id = $db->query_insert('merchant_account_applications',$merchant_data); 

// Close database connection 
$db->close(); 

我已经得到了一些在垃圾邮件这种形式通过最近某人,但不知何故,该用户的IP地址是没有得到我的登录系统。

然而,其他所有经历过的用户都会记录下IP地址。

这个人怎么做才能让我的网站无法获取他们的IP地址?我想禁止他们的IP,但我无法得到它。

任何有关如何获得他们的IP或其他方式来禁止特定用户的信息将不胜感激。

+0

会发生什么? – SLaks

+0

你可能会发布你的代码的相关部分?这将有所帮助...或者,您可以禁止未显示其IP地址的用户发帖。 –

+0

我使用处理数据库插入的代码片段更新了原始帖子。在用SPAM击中我的那个人之后,我的桌子上有一个记录,除了IP地址以外,其他所有内容都填满了。无论何时,当我测试它时,并且任何时候不同的用户填充它时,我都会将他们的IP地址包含在他们的记录中,没有任何问题。 –

回答

1

当用户使用代理服务器(他自己设置了代理服务器)时,发生了这种情况 - 而不是IP地址,我得到了类似“neil @ mars”的东西,因为这是他在代理中配置的。

除了

$_SERVER['REMOTE_ADDR'] 

你可以尝试

getenv('HTTP_X_FORWARDED_FOR') 
getenv('HTTP_CLIENT_IP') 
+0

在这种情况下,我只是为该用户的IP地址获得一个空值。也许他们可以简单地用代理掩盖它.. ??我将不得不看看getenv(),看看是否有帮助。感谢您带领我朝着现在的方向前进。 –

+0

对于这个Neil人来说,发送一个空白IP地址就像发送“neil @ mars”一样简单,这只是他配置他的代理服务器的方式。 –

+0

出于安全原因,'getenv'有时会被禁用。 – luchosrock

相关问题