如何获取IP地址
我想在一个PHP页面里判断是从哪个服务器传过来的,我要拿到服务器的IP地址!不是用户的地址!
例如:
在a.com里有一个链接到b.com的b.PHP,
当b.php执行时通过IP地址(a.com的IP地址)判断是否从a.com传过来的
由于http文件名中的域名判断是可以修改的,所以不能用$_SERVER['HTTP_REFERER']
请问怎么解决!
问题点数:100、回复次数:22Top
1 楼marse(阿彪)回复于 2006-11-10 14:17:50 得分 0
REMOTE_ADDRTop
2 楼PleaseDoTellMeWhy(Allah bless you!)回复于 2006-11-10 14:21:04 得分 0
什么意思,PHP主只要在你的服务器中执行的话,
别的即使是所谓的服务器请求你的PHP页面那它也是相对与你的服务器来说都是客户端啊!
你的意思是PHP文件还能同时从多个服务器上执行?你执行一部分我执行一部分?
$_SERVER["REMOTE_ADDR"] 就能完全满足你!Top
3 楼yueliangdao0608((深圳PHPER.MSN:yueliangdao0608@gmail.com)回复于 2006-11-10 14:21:04 得分 0
$_SERVER['REMOTE_ADDR']Top
4 楼marse(阿彪)回复于 2006-11-10 14:35:49 得分 0
仔细看了一下,我们可能误解LZ的意思了。
估计只能在a.com中的叶面取得$_SERVER["SERVER_ADDR"]传到b.com中,但是这样估计不是LZ想要得。
所以最好还是用$_SERVER['HTTP_REFERER']判断,但是,域名可变就没办法了。
反正php.ini里面是拿不到前一叶面的IP。Top
5 楼iasky(iasky)回复于 2006-11-10 14:36:57 得分 0
// ####################### 获取客户端IP #######################
function getip() {
if (isset($_SERVER)) {
if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];
} elseif (isset($_SERVER[HTTP_CLIENT_IP])) {
$realip = $_SERVER[HTTP_CLIENT_IP];
} else {
$realip = $_SERVER[REMOTE_ADDR];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")) {
$realip = getenv( "HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}Top
6 楼web_php(C#C++_PHPMYSQL_ASP)回复于 2006-11-10 14:52:31 得分 0
$_SERVER["REMOTE_ADDR"];Top
7 楼kennysu(华)回复于 2006-11-10 15:01:16 得分 0
“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。
Top
8 楼kennysu(华)回复于 2006-11-10 15:02:25 得分 0
我要的是a.com的服务器的地址,不是访问用户的地址Top
9 楼baxiqiuxing()回复于 2006-11-10 16:48:01 得分 0
<?php
$hosts = gethostbynamel('www.example.com');
print_r($hosts);
?>
www.example.com改为a.comTop
10 楼marse(阿彪)回复于 2006-11-10 16:58:23 得分 0
preg_match("/^(http:\/\/)?([^\/]+)/i",$_SERVER['HTTP_REFERER'], $matches);
$host = $matches[2];
$ip = gethostbynamel($host);
echo $ip;Top
11 楼marse(阿彪)回复于 2006-11-10 17:10:32 得分 0
preg_match("/^(http:\/\/)?([^\/]+)/i",$_SERVER['HTTP_REFERER'], $matches);
$host = $matches[2];
$ip = gethostbynamel($host);
echo $ip[0];Top
12 楼zhys9(OoP.plorer)回复于 2006-11-10 17:31:17 得分 0
楼上正解!Top
13 楼ad0001()回复于 2006-11-10 18:38:06 得分 0
http://www.carva.net/
楼上正解!Top
14 楼cho__cho(业精于勤,慌于嘻!行成于思,毁于随!)回复于 2006-11-10 19:23:38 得分 0
OK
Top
15 楼macleo(塔塔)回复于 2006-11-11 11:48:59 得分 0
iasky(C#_ASP_PHP) ( ) 信誉:99 Blog 2006-11-10 14:36:58 得分: 0
// ####################### 获取客户端IP #######################
function getip() {
if (isset($_SERVER)) {
if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];
} elseif (isset($_SERVER[HTTP_CLIENT_IP])) {
$realip = $_SERVER[HTTP_CLIENT_IP];
} else {
$realip = $_SERVER[REMOTE_ADDR];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")) {
$realip = getenv( "HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
-----------------------------
支持这段代码!^_^Top
16 楼zhangxialiang(Shining)回复于 2007-04-12 11:17:03 得分 0
:: 可以试试下面的例子:
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>Top
17 楼poiu_poiu()回复于 2007-04-12 11:48:48 得分 0
markTop
18 楼mfzhao(往来之间,光明无限!)回复于 2007-04-12 12:40:01 得分 0
<?php
$hosts = gethostbynamel('www.example.com');
print_r($hosts);
?>Top
19 楼fredyj(醉爱酸奶)回复于 2007-04-12 12:56:38 得分 0
简单的数字签名
http://www.williamlong.info/archives/823.html
=================
A 私钥加密字串
传递
B 接受 公钥解密字串 验证签名合法性Top
20 楼cnvit(渊)回复于 2007-04-12 14:01:32 得分 0
晕
1、客户机1-》服务器1,获取客户端1IP,$_SERVER['REMOTE_ADDR'];
2、服务器1-》服务器2,获取服务器1IP,$_SERVER['SERVER_ADDR'];Top
21 楼tj7181(恺撒)回复于 2007-04-14 09:05:48 得分 0
$_SERVER["LOCAL_ADDR"]
运行服务器的IP地址Top
22 楼tj7181(恺撒)回复于 2007-04-14 09:09:25 得分 0
写错了应该是 $_SERVER['LOCAL_ADDR']Top




