2017-08-29 1 views
0

Je voudrais refuser l'accès à mon portail aux visiteurs dont l'adresse IP est invalide. Est-ce une bonne solution?Refuser aux visiteurs une adresse IP invalide en PHP

$ipaddress = ''; 
    if (getenv('HTTP_CLIENT_IP')) 
     $ipaddress = getenv('HTTP_CLIENT_IP'); 
    else if(getenv('HTTP_X_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); 
    else if(getenv('HTTP_X_FORWARDED')) 
     $ipaddress = getenv('HTTP_X_FORWARDED'); 
    else if(getenv('HTTP_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_FORWARDED_FOR'); 
    else if(getenv('HTTP_FORWARDED')) 
     $ipaddress = getenv('HTTP_FORWARDED'); 
    else if(getenv('REMOTE_ADDR')) 
     $ipaddress = getenv('REMOTE_ADDR'); 
    else 
     $ipaddress = ''; 

    if (filter_var ($ipaddress, FILTER_VALIDATE_IP) == false) 
    { 
     $ipaddress = ''; 
    } 

    if ($ipaddress == '') 
    { 
     die(); 
    } 

Merci!

+2

Si elles ont une adresse IP non valide, elles ne recevront probablement pas la réponse. Aussi, si je devais prendre le temps d'usurper une adresse IP, j'en utiliserais une qui serait validée. – chris85

+1

Quelqu'un avec une adresse IP "invalide" ne pourra pas utiliser Internet, vous avez besoin d'une adresse IP valide. Peut-être devriez-vous définir plus précisément ce que vous entendez par «invalide»? –

+0

Cet article semble répondre à votre question. https://stackoverflow.com/questions/7939905/how-to-detect-the-actual-ip-address-of-visitors?rq=1 –

Répondre

0

Je pense que vous vouliez autoriser uniquement les visiteurs avec une adresse IP réelle non usurpée?

Votre code ci-dessous permettra usurpation d'adresse IP sur votre site web, cependant, je l'ai réparé et fourni une fonction très courte qui fera ce que vous recherchez.

<?php 
$ipaddress = ''; 
    if (getenv('HTTP_CLIENT_IP')) 
     $ipaddress = getenv('HTTP_CLIENT_IP'); 
    else if(getenv('HTTP_X_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); 
    else if(getenv('HTTP_X_FORWARDED')) 
     $ipaddress = getenv('HTTP_X_FORWARDED'); 
    else if(getenv('HTTP_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_FORWARDED_FOR'); 
    else if(getenv('HTTP_FORWARDED')) 
     $ipaddress = getenv('HTTP_FORWARDED'); 
    else if(getenv('REMOTE_ADDR')) 
     $ipaddress = getenv('REMOTE_ADDR'); 
    else 
     $ipaddress = ''; 

    if (filter_var ($ipaddress, FILTER_VALIDATE_IP) == false) 
    { 
     $ipaddress = ''; 
     die(); 
    } 

    /** You don't want this here; 
     kill the script once IP Validation return false. 
    if ($ipaddress == '') 
    { 
     die(); 
    } 
    */ 

## Utilisez cette fonction ci-dessous;

function checkIPAddress() 
    { 
     // Get IP Address using $_SERVER['REMOTE_ADDR']; 
     $ipaddress = ($_SERVER('REMOTE_ADDR')) ? $_SERVER('REMOTE_ADDR') : ''; 

     if (filter_var ($ipaddress, FILTER_VALIDATE_IP) == false) 
     { 
      $ipaddress = ''; 
      die(); 
     } 
    } 
Autoriser HTTP_X_FORWARDED est une mauvaise habitude. Utilisez-le lorsque vous effectuez un serveur proxy, l'équilibrage de charge, etc.
+0

Vous avez raison, merci! – DevinPHP

+0

@DevinPHP De rien. –