Récupérer l'ip du visiteur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 927 fois - Téléchargée 28 fois

Contenu du snippet

Suite à un commentaire sur un source je vous propose, ce code, qui n'est pas de moi, et qui permet de récupérer l'ip du visiteur.

Ces deux fonctions appartiennent à phpMyAdmin et je vous les propose telles quelles...

Source / Exemple :


<?php
function PMA_getIp()
{
    global $REMOTE_ADDR;
    global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
    global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;

    // Get some server/environment variables values
    if (empty($REMOTE_ADDR) && PMA_getenv('REMOTE_ADDR')) {
        $REMOTE_ADDR = PMA_getenv('REMOTE_ADDR');
    }
    if (empty($HTTP_X_FORWARDED_FOR) && PMA_getenv('HTTP_X_FORWARDED_FOR')) {
        $HTTP_X_FORWARDED_FOR = PMA_getenv('HTTP_X_FORWARDED_FOR');
    }
    if (empty($HTTP_X_FORWARDED) && PMA_getenv('HTTP_X_FORWARDED')) {
        $HTTP_X_FORWARDED = PMA_getenv('HTTP_X_FORWARDED');
    }
    if (empty($HTTP_FORWARDED_FOR) && PMA_getenv('HTTP_FORWARDED_FOR')) {
        $HTTP_FORWARDED_FOR = PMA_getenv('HTTP_FORWARDED_FOR');
    }
    if (empty($HTTP_FORWARDED) && PMA_getenv('HTTP_FORWARDED')) {
        $HTTP_FORWARDED = PMA_getenv('HTTP_FORWARDED');
    }
    if (empty($HTTP_VIA) && PMA_getenv('HTTP_VIA')) {
        $HTTP_VIA = PMA_getenv('HTTP_VIA');
    }
    if (empty($HTTP_X_COMING_FROM) && PMA_getenv('HTTP_X_COMING_FROM')) {
        $HTTP_X_COMING_FROM = PMA_getenv('HTTP_X_COMING_FROM');
    }
    if (empty($HTTP_COMING_FROM) && PMA_getenv('HTTP_COMING_FROM')) {
        $HTTP_COMING_FROM = PMA_getenv('HTTP_COMING_FROM');
    }

    // Gets the default ip sent by the user
    if (!empty($REMOTE_ADDR)) {
        $direct_ip = $REMOTE_ADDR;
    }

    // Gets the proxy ip sent by the user
    $proxy_ip     = '';
    if (!empty($HTTP_X_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_X_FORWARDED_FOR;
    } elseif (!empty($HTTP_X_FORWARDED)) {
        $proxy_ip = $HTTP_X_FORWARDED;
    } elseif (!empty($HTTP_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_FORWARDED_FOR;
    } elseif (!empty($HTTP_FORWARDED)) {
        $proxy_ip = $HTTP_FORWARDED;
    } elseif (!empty($HTTP_VIA)) {
        $proxy_ip = $HTTP_VIA;
    } elseif (!empty($HTTP_X_COMING_FROM)) {
        $proxy_ip = $HTTP_X_COMING_FROM;
    } elseif (!empty($HTTP_COMING_FROM)) {
        $proxy_ip = $HTTP_COMING_FROM;
    } // end if... elseif...

    // Returns the true IP if it has been found, else FALSE
    if (empty($proxy_ip)) {
        // True IP without proxy
        return $direct_ip;
    } else {
        $is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
        if ($is_ip && (count($regs) > 0)) {
            // True IP behind a proxy
            return $regs[0];
        } else {
            // Can't define IP: there is a proxy but we don't have
            // information about the true IP
            return FALSE;
        }
    } // end if... else...
} // end of the 'PMA_getIp()' function

/**

  • trys to find the value for the given environment vriable name
*
  • searchs in $_SERVER, $_ENV than trys getenv() and apache_getenv()
  • in this order
*
  • @param string $var_name variable name
  • @return string value of $var or empty string
  • /
function PMA_getenv($var_name) { if (isset($_SERVER[$var_name])) { return $_SERVER[$var_name]; } elseif (isset($_ENV[$var_name])) { return $_ENV[$var_name]; } elseif (getenv($var_name)) { return getenv($var_name); } elseif (function_exists('apache_getenv') && apache_getenv($var_name, true)) { return apache_getenv($var_name, true); } return ''; } ?>

Conclusion :


Voilà!

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Le nom du fichier doit être en .php :)

@++

R@f
Messages postés
1
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
30 novembre 2007

bon ben g mis le code dans une page index.htm
et je l'ai uploaded sur mon serveur

et voila le résultat

* 0)) { * // True IP behind a proxy * return $regs[0]; * } else { * // Can't define IP: there is a proxy but we don't have * // information about the true IP * return FALSE; * } * } // end if... else... * } // end of the 'PMA_getIp()' function * * /** * * trys to find the value for the given environment vriable name * * * * searchs in $_SERVER, $_ENV than trys getenv() and apache_getenv() * * in this order * * * * @param string $var_name variable name * * @return string value of $var or empty string * */ * function PMA_getenv($var_name) { * if (isset($_SERVER[$var_name])) { * return $_SERVER[$var_name]; * } elseif (isset($_ENV[$var_name])) { * return $_ENV[$var_name]; * } elseif (getenv($var_name)) { * return getenv($var_name); * } elseif (function_exists('apache_getenv') * && apache_getenv($var_name, true)) { * return apache_getenv($var_name, true); * } * * return ''; * } * ?>

peux tu m'expliquer pourquoi ça ne fonctionne pas.

MERCI
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Commentaire très constructif Pouda... le code marche très bien c'est plutot toi qui n'arrive pas à le faire fonctionner... mais comme tu n'en dis pas plus... .. .

@ tchaOo°
Messages postés
265
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2014

marche pas ...
Messages postés
1
Date d'inscription
samedi 13 mai 2006
Statut
Membre
Dernière intervention
30 octobre 2006

Bonjours a tous
j'aurai une petite question de débutant, qui peu paraitre stupide mais bon...lol

Lorsque j'ouvre se fichier sur mon site FTP, a chaque fois sa me met :"
Parse error: syntax error, unexpected T_FUNCTION in /mnt/111/sdb/7/f/vinoc1/test/Nouveau Document texte.php on line 2
"
Donc je comprend bien que sa ne marche pas, et qu'il y a une erreur a la ligne 2, mais je ne comprend pas pourquoi...

si quelqu'un veut bien me le dire, je lui serait on peu plus reconnaissant
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.