【发布时间】:2014-09-25 08:29:23
【问题描述】:
我想在打开邮件后找到我发送邮件的收件人的 IP 地址。我可以查到他是否打开了我的电子邮件,但没有得到客户端的正确 IP 地址。
在我的 php 代码中,我创建了一个动态图像路径来跟踪 IP 地址。
<img border="0" height="150" src="http://www.ogmaconceptions.com/tracking.php?email=<?php echo $client_email?>" width="100" />
在我的 tracking.php 中,我使用此代码来跟踪 IP 并动态创建图像。
public function getRealIP() {
$ipaddress = '';
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$ipaddress = $_SERVER['HTTP_CF_CONNECTING_IP'];
} else if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$ipaddress = $_SERVER['HTTP_X_REAL_IP'];
}
else if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
function LoadJpeg($imgname)
{
/* Attempt to open */
$im = @imagecreatefromjpeg($imgname);
/* See if it failed */
if(!$im)
{
/* Create a black image */
$im = imagecreatetruecolor(150, 30);
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
/* Output an error message */
imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
}
return $im;
}
header('Content-Type: image/jpeg');
$img = LoadJpeg('images/OC-logo.jpg');
imagejpeg($img);
imagedestroy($img);
我得到的 IP 是收件人的电子邮件服务器的 IP,而不是收件人的实际 IP 地址。有什么技巧可以让我也获得客户端IP。
谢谢 阿马尔
【问题讨论】: