我尝试过这个php方法来获取ip地址,但是它提供了错误的输出。正则方法
<?php echo $_SERVER['REMOTE_ADDR']; ?>不提供适当的输出。当我使用这种方法时,我得到的输出如下
IP地址:‘:1’
我的剧本有什么问题吗?还请提前给出在数据库中存储这些ip地址的详细信息。
发布于 2015-01-28 06:37:27
“:1”表示这是您的本地主机IP地址。
*1 == 127.0.0.1
你也可以试试这个。
$ip=$_SERVER['REMOTE_ADDR'];
echo "IP address= $ip";如果您的应用程序驻留在您试图请求的同一台计算机上,那么它将始终返回'::1',这意味着LocalHost。否则它将返回客户端IP地址。
发布于 2015-01-28 06:48:00
完整的脚本是:D :p (不幸的是,这个脚本在mysql中,而不是mysqli/pdo中)。你以后可以修改这个。
File1.php
<?php
//connect to database
class usersOnline {
var $timeout = 300;
var $count = 0;
var $error;
var $i = 0;
function usersOnline () {
$this->timestamp = time();
$this->ip = $this->ipCheck();
$this->new_user();
$this->delete_user();
$this->count_users();
}
function ipCheck() {
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
}
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_X_FORWARDED')) {
$ip = getenv('HTTP_X_FORWARDED');
}
elseif (getenv('HTTP_FORWARDED_FOR')) {
$ip = getenv('HTTP_FORWARDED_FOR');
}
elseif (getenv('HTTP_FORWARDED')) {
$ip = getenv('HTTP_FORWARDED');
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function new_user() {
$cekIP = "SELECT ip FROM useronline WHERE ip='$this->ip'";
$resultCekIp=mysql_query($cekIP);
$countCekIp=mysql_num_rows($resultCekIp);
if($countCekIp>0){
$insert1 = mysql_query ("UPDATE useronline SET timestamp='$this->timestamp', date=NOW(), ip='', distinct_ip='$this->ip'");
if (!$insert1) {
$this->error[$this->i] = "Unable to record new visitor\r\n";
$this->i ++;
}
}
else{
$insert2 = mysql_query ("INSERT INTO useronline (timestamp, date, ip, distinct_ip) VALUES ('$this->timestamp',NOW(), '$this->ip', '$this->ip')");
if (!$insert2) {
$this->error[$this->i] = "Unable to record new visitor\r\n";
$this->i ++;
}
}
}
function delete_user() {
$delete = mysql_query ("DELETE FROM useronline WHERE timestamp < ($this->timestamp - $this->timeout)");
if (!$delete) {
$this->error[$this->i] = "Unable to delete visitors";
$this->i ++;
}
}
function count_users() {
if (count($this->error) == 0) {
$count = mysql_num_rows ( mysql_query("SELECT DISTINCT ip FROM useronline"));
return $count;
}
}
}
?>File2.php
<?php
include('file1.php');
$jml_ol = new usersOnline();
if (count($jml_ol->error) == 0) {
if ($jml_ol->count_users() == 1) {
echo $jml_ol->count_users() . "<br />";
echo "Your IP: " . $jml_ol->ipCheck();
}
else{
echo $jml_ol->count_users() . "<br />";
echo "Your IP: " . $jml_ol->ipCheck();
}
}
?> 在体内还是在div中:
<body>
<?php include('File2.php'); ?>
</body>发布于 2015-01-28 06:34:57
下面是一些示例代码
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}从这里上捡来的
https://stackoverflow.com/questions/28186043
复制相似问题