begin process at 2008 07 21 02:21:35
1 213 553 membres
22 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRER L'IP DU VISITEUR


Information sur la source

Catégorie :Astuces Classé sous : ip, phpmyadmin, proxy Niveau : Débutant Date de création : 23/10/2006 Vu : 8 671

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

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

  • <?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 '';
  • }
  • ?>
<?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à!
  • signaler à un administrateur
    Commentaire de webdeb le 23/10/2006 12:56:21

    Pourquoi ne pas utiliser le tableau $_SERVER pour récupérer toutes ces informations ! C'est fait pour ça.

  • signaler à un administrateur
    Commentaire de coockiesch le 23/10/2006 13:38:51

    Oui, je sais, mais, comme je l'ai dit, je poste cette source suite à un commentaire et la poste telle quelle...

    @++

    R@f

  • signaler à un administrateur
    Commentaire de kankrelune le 23/10/2006 16:01:24

    Ouep... j'utilise cette fonction (recodée parce que les global à tout va c'est beurk) et c'est autrement plus efficace que le récurant $_SERVER['REMOTE_ADDR'] (dans le genre hello world)... .. .

    @ tchaOo°

  • signaler à un administrateur
    Commentaire de coockiesch le 23/10/2006 17:10:04

    <?
    print "$REMOTE_ADDR";
    ?>
    :-D

  • signaler à un administrateur
    Commentaire de audayls le 23/10/2006 17:18:32

    Woua merci beaucoup Coockiesch ! Je t'en dois une mdr :-D

  • signaler à un administrateur
    Commentaire de jean84 le 23/10/2006 17:45:47

    Salut !

    2 choses :
    - je comprend pas pourquoi tu as mis les variables en global... faut m'expliquer la ;-)
    - quel interet de mettre les commentaires en anglais ? Pour une fois qu'un forum francophone attire des miliers de gens et qu'on peut avoir de bonnes sources sans essayer de traduire les commentaires tout en essayant de comprendre la source, faut en profiter... Je suis pas anglophobe mais je trouve sa penible. Si tu vas sur un forum en anglais et que tu commentes un source en francais, je suis pas sur que les gars apprecient (surtout si les commentaires sont utiles). Alors pourquoi le faire ici ?
    Bon c'est sur que je ferais pas l'unanimite car y a surement des adeptes mais je trouvais important de le signaler.

    Merci :-)

  • signaler à un administrateur
    Commentaire de malalam le 23/10/2006 19:25:58 administrateur CS

    Jean84 => Lis le descriptif : "Ces deux fonctions appartiennent à phpMyAdmin et je vous les propose telles quelles... " Cette source n'est pas de Coockiesch mais est extraite de PhpMyAdmin comme il le stipule. D'où les commentaires en anglais, et les approximations de code (PhpMyAdmin n'est pas tout jeune...;-))

  • signaler à un administrateur
    Commentaire de jean84 le 23/10/2006 22:30:40

    Arf autant pour moi j'avais pô vu ^^ Faut dire que sur cppfrance.com, c'est la mode alors sur le coup, j'ai vu rouge ... desole Coockiesch de n'avoir pas lu ^^

    @++

  • signaler à un administrateur
    Commentaire de kankrelune le 24/10/2006 12:17:49

    Qui plus est les conventions de codage préconise l'utilisation de l'anglais pour les commentaires (portabilité d'une communautée à une autre) et le nomage des variables, fonctions, classes (pas d'accent, action plus facilement identifiable)... .. .

    Quand quelqu'un poste une source ici il ne l'a pas forcement codé uniquement pour phpcs... .. . ;o)

    @ tchaoOo°

  • signaler à un administrateur
    Commentaire de vinoc le 30/10/2006 20:20:43

    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

  • signaler à un administrateur
    Commentaire de pouda le 24/03/2007 10:26:26

    marche pas ...

  • signaler à un administrateur
    Commentaire de kankrelune le 24/03/2007 11:53:54

    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°

  • signaler à un administrateur
    Commentaire de shabbazz le 30/11/2007 05:26:11

    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

  • signaler à un administrateur
    Commentaire de coockiesch le 03/12/2007 18:28:51

    Salut!
    Le nom du fichier doit être en .php :)

    @++

    R@f

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS