2010-07-10 8 views
0

j'ai suivant code php pour obtenir vistor ipobtenir une adresse IP erronée en php

function VisitorIP() 
    { 
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
    $TheIp=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    else $TheIp=$_SERVER['REMOTE_ADDR']; 
    return trim($TheIp); 
    } 
    $Users_IP_address = VisitorIP(); 

mais chaque fois que j'exécuter ce script sur mon localhost i a :: 1 IP

comment puis-je Internet exact IP & adresse IP du système parce que mon script s'exécutera sur LAN nwteork et je veux enregistrer IP de LAN pcs & Internet IP et l'enregistrer dans la base de données mysql.

J'ai besoin de code PHP qui privide système local IP et système IP Internet.

Merci

+1

:: 1 est votre adresse IPv6 – Naktibalda

Répondre

3

Techniquement, vous obtenez la bonne adresse IP. ::1 est votre adresse IPv6 de bouclage (localhost).

2

D'abord, lancer cette fonction stupide loin, parce que HTTP_X_FORWARDED_FOR n'est pas une adresse IP, mais seulement un en-tête HTTP, et le faire juste

$Users_IP_address = $_SERVER['REMOTE_ADDR']; 

Ensuite, vous devez configurer votre serveur pour travailler avec ipv4, pas ipv6.
Bien qu'il ne soit pas vraiment une question de PHP et doit être demandé sur le serverfault, fourni avec l'installation complète du système: système d'exploitation, la version, vos droits, etc.

+0

voir que je veux un code PHP qui privide système local IP et Internet IP système. – air

+0

@air vous devez reconfigurer votre serveur. Quelle est la valeur du paramètre 'Listen' dans le fichier htttpd.comf d'apache? –

1

Lorsque vous exécutez au-dessus de script sur localhost vous pouvez obtenir ::1 ce résultat.

C'est très commun.

Si vous souhaitez obtenir votre adresse IP système avec localhost, utilisez ce code.

1) Script pour localhost

<?PHP 

$ip = @file_get_contents("http://www.apps-tube.com/apps/ip-address/ip.php"); 

echo $ip; 

?> 

2) Script pour Servers

<?PHP 

function getUserIP() 
{ 
    $client = @$_SERVER['HTTP_CLIENT_IP']; 
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
    $remote = $_SERVER['REMOTE_ADDR']; 

    if(filter_var($client, FILTER_VALIDATE_IP)) 
    { 
     $ip = $client; 
    } 
    elseif(filter_var($forward, FILTER_VALIDATE_IP)) 
    { 
     $ip = $forward; 
    } 
    else 
    { 
     $ip = $remote; 
    } 

    return $ip; 
} 


$user_ip = getUserIP(); 

echo $user_ip; // Output IP address [Ex: 177.87.193.134] 


?> 
+0

J'ai supprimé le lien vers le service "get my IP" sur votre site Web. Ce n'est * pas * lié à cette question, et vous n'avez pas indiqué que c'était votre site, de toute façon. –