2011-08-27 5 views
2
function getIp() { 
    return "<?php echo $_SERVER['REMOTE_ADDR']; ?>"; 
} 

Je veux adapter ou refaire ceci afin que certaines actions ne puissent être prises que depuis localhost ou mon serveur isp. Je peux le faire fonctionner avec un peu de JavaScript pour 127.0.0.1 mais pas pour l'autre.Comparaison des adresses IP

Appréciez toute aide; merci

+3

Qu'est-ce que JavaScript ne faire avec du tout? Vous devriez clarifier votre question. – Brad

+0

Et si le client a JavaScript désactivé, alors quoi? On dirait que vous essayez de mettre en place une sorte de sécurité. Ce n'est pas le cas. –

+0

Ne cherchez pas aussi ':: 1'. – glglgl

Répondre

5

Vous voulez vraiment faire cela complètement sur le serveur. Si vous vérifiez les adresses IP du côté client, les utilisateurs peuvent très facilement contourner ce problème. Par exemple en modifiant votre code dans leur navigateur en utilisant un inspecteur Web comme Firebug.

Heureusement, il est assez simple à faire sur le côté serveur:

La variable $_SERVER['REMOTE_ADDR'] est une chaîne simple de sorte que vous devriez être en mesure d'utiliser la comparaison de chaînes pour vérifier les adresses IP que vous voulez.

Comme par exemple:

<?php 
    if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1" || $_SERVER['REMOTE_ADDR'] == "1.2.3.4") { 
     echo "Show secret things here"; 
    } 
?> 
+0

Merci à tous, en particulier St3fan. Ça marche. Je devrais expliquer ce que je fais n'est pas une solution logicielle mais une solution qui utilise un logiciel. Ma principale préoccupation est d'autres parties, mais il me semble que je dois faire un peu de codage comme une sorte de spécification de performance pour l'aide professionnelle. –

+0

Le titre de la question est "Comparaison des adresses IP". Notez que la comparaison de chaînes en général n'est pas une bonne idée pour comparer les adresses IP! La raison en est qu'il existe plusieurs chaînes représentant la même adresse IP. Par exemple, l'adresse IP '127.0.0.1' est égale à' 127.000.000.001', '127.00.000.1' ou même' 0: 0: 0: 0: 0: ffff: 7f00: 1' (comme ipv6), juste pour Nommez quelques-uns. Vous ne pouvez effectuer une comparaison de chaînes que si vous savez que votre adresse IP est dans un format normalisé. Il se peut que '$ _SERVER ['REMOTE_ADDR']' le fasse (je n'ai rien trouvé dessus), mais cela dépend aussi de la version de PHP, du système d'exploitation, etc. –

+0

Par sécurité, mieux vaut utiliser if (ip2long ($ _ SERVER ['REMOTE_ADDR']) === ip2long ("127.0.0.1")) '(seulement pour ipv4). –