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 或以其他方式禁止特定用户的信息将不胜感激。

4

2 回答 2

2

使用这个:https ://gist.github.com/cballou/2201933

这适用于我的博客网站。我不知道为什么 $_SERVER['REMOTE_ADDR'] 不能处理这个问题,但是 github 中的代码片段效果很好。

于 2014-12-15T05:24:44.130 回答
1

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

此外

$_SERVER['REMOTE_ADDR']

你可以试试

getenv('HTTP_X_FORWARDED_FOR')
getenv('HTTP_CLIENT_IP')
于 2012-12-28T18:47:05.333 回答