begin process at 2012 05 27 18:18:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RÉCUPÉRER L'IP DU VISITEUR

RÉCUPÉRER L'IP DU VISITEUR


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : coockiesch

Ecrire un message privé
Site perso
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à!


 Sources du même auteur

GÉRER UN .HTPASSWD
Source avec Zip Source avec une capture IMAGE ANTI-SPAM
MOTEUR DE RECHERCHE DANS BDD II
PRETTY DATE
Source avec Zip Source avec une capture FORMULAIRE (NEWS, LIVRE D'OR, ...)

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
Source avec Zip PROTÉGER UNE PAGE PAR UN MOT DE PASSE SANS COOKIES par Hitoshi54
Source avec Zip TROUVER UNE IP ET L'AFFICHER MÊME DERRIÈRE UN PROXY par cod57
VERIFICATION D'UNE ADRESSE IP par cherifnet2002
Source avec Zip DÉTECTION DE LA VRAIE ADRESSE IP par visualight

Commentaires et avis

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.

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

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°

Commentaire de coockiesch le 23/10/2006 17:10:04

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

Commentaire de audayls le 23/10/2006 17:18:32

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

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 :-)

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...;-))

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 ^^

@++

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°

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

Commentaire de pouda le 24/03/2007 10:26:26

marche pas ...

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°

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

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 dans le forum

fopen & proxy [ par thierry ] Bonjour à tous et à toutes !Je tente d'utiliser la fonction fopen en ouvrant une page web par exemple. Seulement voila mon pb. Chez moi ca marche très IP variable et url fixe [ par omnikod ] Vous avez une connexion ADSL ?Vous avez un serveur Web ?Vous avez une IP dynamique et vous voulez pouvoir acceder à votre site par une adresse du styl Tri d'IP... [ par echo200 ] Bonjour,En php, est-il possible de "trier" les ip authorisés à visitter un site web (définis selon nos critères), et d'éventuellement bannire les impo Apache comme proxy ? [ par Clem ] J'ai vu que il est possible d'utiliser Apache comme serveur proxy, mais je n'y arrive pas. Pouvez-vous m'aider ? phpmyadmin 1.6 PROBLEME [ par g0belin ] Ben voila je suis sur multimania et je fais mon site en interne avec phpmyadmin 1.6:-----------------------------------------------------------j'ai re Probleme url [ par yannj1988 ] J'utilise une version modifier de PHPMYADMIN et dans le fichier config on me demande l'url absolute.Quand je m'est une url du type http://127.0.0.1/ph Passer de dév en prod [ par iubito ] Bjour tout le monde!J'ai besoin de votre aide car j'sais pas faire, euh... c'est la première fois que j'le fais.J'ai un serveur web sur Linux sur l'In Adresse ip [ par kwak ] Bonjour à tous,je ne comprends pas très bien pourquoi la valeur de $REMOTE_ADDR change continuellement dans ce script quand je l'execute:&lt;?print("V Premier pas et Pb avec phpmyadmin [ par gege1024 ] voila, je desire passer d'un site statique à un site dynamique,comme je ne compte pas faire de mon ordi un serveur, j'ai ouvert un compte php3 sur fre php : lire fichier txt, comparer heure et choix liens [ par drominik ] voila,j'ai dans un fichier txt, l'ip du visiteur et l'heure de sa visite,et j'aimerais a chaque visiteur pouvoir aller lire le fichier txt, et compare


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales