Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取客户端用于请求数据的网站的IP_Php - Fatal编程技术网

Php 获取客户端用于请求数据的网站的IP

Php 获取客户端用于请求数据的网站的IP,php,Php,我试着只允许某些IP使用PHP资源,我试着使用服务器引用器,但不幸的是,它很容易被欺骗,因为它是一个客户端头,可以很容易地修改 我希望资源可以从网站上访问,但访问网站的客户端的IP与网站上的IP不同。 这意味着客户端不能通过浏览器或curl直接访问资源,但如果通过网站访问,则应允许访问。 我想我可以使用这些$server密钥中的一些: 'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','

我试着只允许某些IP使用PHP资源,我试着使用服务器引用器,但不幸的是,它很容易被欺骗,因为它是一个客户端头,可以很容易地修改

我希望资源可以从网站上访问,但访问网站的客户端的IP与网站上的IP不同。 这意味着客户端不能通过浏览器或curl直接访问资源,但如果通过网站访问,则应允许访问。

我想我可以使用这些$server密钥中的一些:

'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR'
但是我不知道使用哪一个来获取网站IP以查看它是否与预期的匹配,以及哪一个返回客户端的IP。

我已经试过了,但是不起作用,因为它可以被欺骗

public function getHost()
{
    $url = parse_url($_SERVER['HTTP_REFERER']);
    if ($url != null) {
        return gethostbyname($url["host"]); // returns referer IP's
    }
}
显然getHost()应该从上面提到的返回一个键,但我不确定是哪一个


提前谢谢你

想测试@deceze是否正确,所以我做了一些测试

左:本地,右:同一主机

左:本地,右:跨站点



因此,可悲的是,他是,没有办法检查使用$_服务器,并引用其不可靠的解决方案,直接执行来自服务器的js请求,并将其作为内容注入,显示预呈现的数据

如果请求是由浏览器(即客户端本身)发出的,则不能通过IPs进行限制。请求需要来自第三方的web服务器,因此客户端向第三方服务器发出请求,而第三方服务器向您的服务器发出请求。