-
Notifications
You must be signed in to change notification settings - Fork 262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
地理位置和服务器 IP 地址问题 #127
Comments
地理信息显示一直想要加上,苦于接口部署。 |
使用 CSS 媒体查询来个深色模式怎样? 最好是一开始 CSS 主动决定深色/浅色,允许用户手动更改为系统默认(CSS 媒体查询)/强制深色/强制浅色。 |
暗黑模式或定时暗黑模式,都在计划中的。 |
思考了一下,如果想要获取服务器公网IPv4和IPv6,那么就必须依靠外部接口来得知。那么这个接口应该如何开发部署,这个需要进一步考究。 |
获取 IPv6 地址可以通过检测网卡所拥有的 IP 地址获取,IPv4 就只能靠外部接口了,但是万一有人用反代,很多东西都会出问题。 |
通过网卡获取 IP,这个对 PHP 来说,一般都是没权限的。 |
也是噢,毕竟 PHP …… |
以 PHP 的权限,就只能用外部接口了,或者提供一个附属程序让用户自己搭建,就是要域名。 |
可以做一个多ip探测的接口,类似温度传感器功能。但怎么获取来路的ipv4和ipv6, 这个我目前还没思路。 |
获取访问者的 IP 地址的话服务器变量 |
|
这个方法确实就是给外部接口用的。 |
找了一下,最后如果没有其他方法的话,可以用这两个作为备选显示IP4/6: |
我这测试两个都可用,从浏览器开始发起连接到下载完成,两个都约1s. |
第一个大约 110ms,第二个大约300ms. |
使用异步的,快慢不影响页面加载。 |
那没事了。 |
不过实话说这些地址我都不是十分信赖,因为第三方服务没法审查源码,有可能会导致一些不可预料的情况发生。 |
自己部署自然是最好的,但是用户不一定有那么多服务器来部署,而且用户的服务器之间的连接也是个问题。 |
自己搭建 API 的话维护是一个问题,让用户搭的话又有很多不确定因素。 |
我用我的服务器搭建 api 就行。 |
这两个地址,大家在服务器或本机用 |
中国移动 100Mbps 网络,响应十分慢,存在一定概率会失败,IPv6 与 IPv4 均是如此。 代理哪个地区的记不清了。 |
了解了 |
试试下载 https://github.com/kmvan/x-prober/tree/dev/dist 探针开发版,增加了服务器ip4/6和地理位置检测显示。 |
https://github.com/kmvan/x-prober/tree/dev/dist 探针开发版增加了暗黑模式,可以试试 |
v7.1 版本中我的信息中的我的 IPv6 在不支持 IPv6 的网络环境中一直显示加载中。 |
正常来说超过5秒还是加载中,那大概率是不支持ip6, 因为有些网络即使自身没有ip6, 却不会返回超时或其他状态,只会一直loading,所以我也没办法知道到底它是否支持ip6。只能让它一直loading了。 |
那建议每隔一段时间(大约5~10s)重试一次,重试多次(两三次)后还是失败的话就直接显示获取失败了。 第一次获取和后面的重试都先不要取消,等到那次获取/重试发起请求达到30s还是没有响应的话再取消,如果突然某次获取/重试响应了 IPv6 的信息,再把获取失败或者加载中的信息给改掉。 |
确实也是,留意7.2版本更新 |
给 https://prober.inn-studio.com/ 提个建议,加上 favicon.ico. |
还没想到适合这个探针的图案 |
目前检测ip的方案是,先走 https://ipv4.inn-studio.com/ip?json 如果失败再走 iptest 的那个站点api,若依然失败则走PHP自身的$_SERVER 变量,如果都失败就显示不支持。 |
如果最后获取 REMOTE_ADDR 的话没道理 IPv4 和 v6 都不支持吧? |
主要是 REMOTE_ADDR 这个并不准确,他是当前网卡的ip,可能是内网,可能是回环,也可能是外网。而且 REMOTE_ADDR 这个参数,似乎不分ipv4或6的,基本上没法控制。所以我选择准确度,REMOTE_ADDR 暂时还没办法来判断获取的 ip 是否真实。 |
REMOTE_ADDR 理论上来说会是直接访问者的 IP。 |
试试下载7.2开发版 https://github.com/kmvan/x-prober/tree/dev/dist 测试一下在差网络下的“我的IP”显示状况? |
Parse error: syntax error, unexpected '?' in D:\phpStudy\PHPTutorial\WWW\test\x.php on line 2 |
忘记说了,我今天刚好找到一个获取地理位置的,不用重新造轮子 |
这个不错,收藏了 |
我修改了一段,可以获取自己的,也可以查询 $ip=getip(); |
如果没什么问题就先关闭了,有问题还请继续讨论 |
获取 IPv4、IPv6、地理位置、服务器地理位置 四个功能经常会出现其中一两个加载失败的情况。 |
毕竟国际网,正常。 |
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
fe80::
或者其它类似的开头的本地链路 IPv6 地址,如果存在非本地链路 IPv6 地址,则说明获取到了 IPv6 地址。Describe alternatives you've considered
None.
Additional context
None.
The text was updated successfully, but these errors were encountered: