2017-02-19 1 views
0

Je crée une page de base qui affiche votre adresse IP WLAN, J'ai un index.php comme page de destination et un getip.php requis par index.php le problème que j'ai est que la page affichera la dernière ip enregistrée, et non la vôtre, jusqu'à ce que la page soit actualisée. J'ai déjà essayé sans cache et expire mais pas bon. ma question est .. comment puis-je faire en sorte que la variable php est tiré sur le chargement de la page et pas seulement sur l'actualisation .. Merci.Variable de mise à jour PHP lors du chargement de la page

ceci est mon index.php:

<?php 
    require "getip.php"; 
    $ip = getip(); 
    ?> 

et puis juste:

<p style="text-align: center; color:white;"> 
Your IP address is 
<span style="color:red;"> 
<?php 
    echo $ip; 
?> 
</span> 
</p> 

et mon getip.php:

<?php 

function getip() { 
    $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 = 'UNKNOWN'; 

     return $ipaddress; 
     }?> 
+0

La méthode la plus fiable pour obtenir une adresse IP est simplement $ _SERVER ['REMOTE_ADDR']. Tous les en-têtes que vous testez peuvent être facilement usurpés. Voir http://stackoverflow.com/questions/1634782/what-is-the-most-accurate-way-to-retrieve-a-users-correct-ip-address-in-php?rq=1 –

+0

va rester dans esprit, merci .. mais encore besoin d'une réponse à ma question. – JoelContreras

+0

@AndreiSavin la façon dont il fait est en réalité mieux car il s'agit de serveurs proxy et ce n'est pas le cas. Par exemple, si vous obtenez une requête proxy, vous obtiendrez l'adresse du serveur proxy, et non le client qui demande réellement l'information. – Augwa

Répondre

2

Le problème que vous déclarez ci-dessus est la comportement normal du serveur web php. Comment voulez-vous que la fonction php vous donne une nouvelle adresse IP à moins qu'il y ait un déclencheur pour obtenir le nouveau?

Vous n'êtes pas trouvé la nouvelle adresse IP instantanément après avoir modifié l'adresse IP est dû à la suite fait ::

  1. PHP est un script côté serveur qui signifie un peu que les actions seront effectuées seulement après la page recharger.
  2. Puisque vous n'avez aucune méthode pour recharger la page, vous n'obtenez pas la nouvelle adresse IP instantanément.
  3. Vous obtenez le nouvel ip après l'actualisation de la page car la fonction getip() est appelée lorsque vous rechargez votre page qui génère l'adresse IP actuelle. c'est-à-dire que vous déclenchez manuellement la fonction en actualisant votre page.

Il y a peu de choses que vous pourriez vouloir essayer ::

  1. Utilisez balise html pour vous rafraîchir la page sur certains intervalle. Utilisez le php connection handling, c'est un sujet assez intéressant.
  2. Utilisez le déclencheur manuel en tant que clic de bouton pour appeler getip() et afficher la nouvelle adresse IP.
+0

merci, votre réponse est très logique .. – JoelContreras

+0

Sans oublier. Je suis heureux de partager. Codage heureux !! – Bayou