2017-02-19 115 views
0

我想提出一个基本的网页显示您的WLAN IP地址, 我有一个index.php文件作为着陆页和被需要的index.php我遇到的问题getip.php是页面将显示最后保存的ip,而不是你的,直到页面刷新。我已经尝试过没有缓存并过期但没有好处。 我的问题是..我如何使它所以PHP变量被拉到页面加载,而不仅仅是刷新.. 谢谢。PHP变量更新

这是我的index.php:

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

,然后只是:

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

和我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

获取IP地址最可靠的方法就是$ _SERVER ['REMOTE_ADDR']。所有你正在测试的头文件都很容易被欺骗。见http://stackoverflow.com/questions/1634782/what-is-the-most-accurate-way-to-retrieve-a-users-correct-ip-address-in-php?rq=1 –

+0

将保持介意,谢谢..但仍然需要我的问题的答案。 – JoelContreras

+0

@AndreiSavin他做的事情实际上是更好的,因为它处理代理服务器,而不是。例如,如果您收到代理请求,您将获得代理服务器的地址,而不是实际请求信息的客户端。 – Augwa

回答

2

你在上面指出的问题是php web服务器的正常行为。你如何期待php函数给你新的ip,除非有触发器来获得新的ip?

你没有得到新的IP地址后,立即更改IP地址是由于以下事实::

  1. PHP是服务器端脚本这在一定程度意味着该行动将只在页面后进行重装。
  2. 既然你没有任何方法来重新加载页面,你是不是立刻获得新的IP地址。
  3. 您在页面刷新后获得新的IP,因为该功能getip()当您重新载入网页产生的电流ip被调用。即通过刷新页面手动触发该功能。

有你可能想尝试::

  1. 使用html标签,刷新一定的时间间隔,你页面几件事情。
  2. 使用php connection handling,这是很有意思的话题。
  3. 使用手动触发器作为按钮单击以调用getip()并显示新的ip。
+0

谢谢,你的回答很逻辑.. – JoelContreras

+0

别说了。我很乐意分享。快乐编码! – Bayou