不知怎的,$ _SERVER [' REMOTE_ADDR']没有给我这个用​​户的IP地址..?

时间:2012-12-28 18:38:42

标签: php

我的网站上有一个基本的申请表,使用$_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或以其他方式禁止特定用户的信息。

2 个答案:

答案 0 :(得分:2)

使用此:https://gist.github.com/cballou/2201933

这适用于我的博客网站。我不知道为什么$ _SERVER [' REMOTE_ADDR']无法解决这个问题,但github中的代码段工作得非常好。

答案 1 :(得分:1)

当用户使用代理(他已经自己设置)时,我发生了这种情况 - 而不是IP地址,我得到了类似“neil @ mars”的内容,因为这是他在代理中配置的内容。 / p>

除了

$_SERVER['REMOTE_ADDR']

你可以尝试

getenv('HTTP_X_FORWARDED_FOR')
getenv('HTTP_CLIENT_IP')