Affichage d'adresse IP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage d'adresse IP

par AB » 16 août 2007, 01:31

Fais un tour dans les variables de serveur $_SERVER et particulièrement REMOTE_ADDR pour l'adresse IP

par yuuzhantar » 15 août 2007, 18:51

bonjour

je voudrais savoir aussi comment afficher les info du fournisseur d'accès

par exemple sur adresseip.com
il y a une ligne avec l'ip et l'autre qui affiche des infos supplémentaires

merci bien

par jojolapine » 24 janv. 2007, 16:10

ueh ben c'est surement pas la faute au script, mais à ton FAI qui te donne une ip dynamique

Affichage d'adresse IP

par vares2 » 24 janv. 2007, 16:09

Bonjour,

J'ai remarqué qu'avec ce script l'adresse IP générée est dynamique.
Chaque fois que je me connecte au PC apres un reboot, l'adresse change
Je voulais que l'adresse IP soit fixe.

Merci de m'aider à génerer une adresse fixe

par jojolapine » 11 janv. 2007, 14:23

ça y est j'ai trouvé où j'avais lu qu'il fallait rajouter un long2ip(ip2long()):
ip2long() ne devrait pas être utilisée comme seule méthode pour valider une adresse IP. Combinez-la avec long2ip() :

Exemple 3. Validation d'adresse IP
<?php
// s'assure que les IPs sont valides. Convertit également une IP incomplète
// en un format valide comme expliqué plus haut.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>

par albat » 11 janv. 2007, 14:15

C'est à mon sens un peu plus lisible que de tout mettre sur une ligne :)
Justement ! Ça perd tout son intérêt !!! :lol:

Je ne sais plus lequel d'entre nous a dans sa signature cette recommandation :
(...) ça a été dur à écrire, ça doit être dur à comprendre.

par Ryle » 11 janv. 2007, 12:09

Tu pourrais faire quelque chose dans ce goût là :
($test) ? true : 
  (($test) ? true : 
  (($test) ? true : 
  (($test) ? true : false)));
C'est à mon sens un peu plus lisible que de tout mettre sur une ligne :)

Personnellement j'aime pas l'imbrication des ternaires, je préfère donc le if/elseif/else, mais j'aime pas les accolades inutiles, même si certains en ont besoin pour lire leur code, pour moi, une bonne indentation suffit.

Donc entre la version une ligne et la version expand, j'utiliserais une structure intermédiaire :
function get_ip()  { 
    if (isset($_SERVER['HTTP_CLIENT_IP'])) 
        $ip = $_SERVER['HTTP_CLIENT_IP'];  
    elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
    else  
        $ip = $_SERVER['REMOTE_ADDR'];  

    return long2ip(ip2long($ip)); 
}

par albat » 11 janv. 2007, 12:02

Pour être tout à fait sincère, j'ai pas fait ça de tête, d'un seul jet... :oops: :-*

J'ai commencé en les indentant, en effet.
Puis, une fois l'écriture finalisée, testée, validée, je l'ai résumée en une seule ligne.

:idea: le truc : commencer par le dernier test, bien sûr. ;)

par zeus » 11 janv. 2007, 11:46

Puisque le sujet est résolu, je me permet un HS.

Quand tu fait 4 niveau, est-ce que tu indentes les opérateurs ou est-ce que tu écrits tout sur une ligne ?

Parce qu'en fait, j'arrive pas à trouver la lisibilité :oops:

par albat » 11 janv. 2007, 11:41

si les parenthèses sont bien placée
ce qui n'est pas forcément le plus simple à respecter... |*()

4 niveaux... y a quand même des fois où j'abuse... :-*

par zeus » 11 janv. 2007, 11:34

Je ne peut qu'appuyer Albat sur le comportement de l'opérateur ternaire :pouce:

Même si je ne les imbrique jamais, je n'ai jamais observé de dysfonctionnement et si les parenthèses sont bien placée, il n'y a aucune raison.

par albat » 11 janv. 2007, 11:32

Le comportement de PHP lors de l'utilisation de plus d'un opérateur ternaire dans une seule instruction n'est pas évident
Je ne connaissais pas cette mise en garde. :shock:

Cela dit, je n'ai jamais observé le moindre dysfonctionnement. :pouce:

Et je me suis pourtant amusé à aller jusqu'à 4 niveaux !
(mais ça, c'était juste par jeu, pour m'entraîner...) :ordi:

Pour l'avoir utilisé, réutilisé, torturé,... je suis donc plus confiant que php.net
dans le bon fonctionnement de l'opérateur ternaire. ;)

par zeus » 11 janv. 2007, 11:21

Euh :oops: ... si je puis me permettre .... 8-|
Note : Il est recommandé de ne pas "empiler" les expressions ternaires. Le comportement de PHP lors de l'utilisation de plus d'un opérateur ternaire dans une seule instruction n'est pas évident

par albat » 11 janv. 2007, 11:15

Une simple question de goûts et de couleurs...

Personnellement,, je décode sans difficulté les instructions à base d'opérateurs ternaires
tandis que les articulations infinies de test "if", "elseif", "else else elseif" :langue:
qui prennent 15 lignes pour une simple attribution de valeur me brouillent un peu la vue.

Je proposais donc cette écriture comme alternative possible et totalement identique.
Juste pour info.

Après, chacun choisit...

par Xenon_54 » 11 janv. 2007, 03:07

Pourquoi une seule ligne de commande? C'est moins lisible et je suis certain que ça prend le même temps à interpréter.

En révisant nos vieilles architectures, nous avons vu plein d'entrées cron dites "one line" et c'est impossible à déchiffrer ou maintenir.