PHP $_SERVER['REMOTE_ADDR']取得的竟然是服务器IP
function ip()
{
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
{
$ip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
{
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
{
$ip = getenv('REMOTE_ADDR');
}
elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match("/[\d\]{7,15}/", $ip, $matches) $matches[0] : 'unknown';
}
先在你这个要被访问的php文件中获取到访问这个文件的用户的内网ip和外网ip,然后这个php文件的代码最上面,把获取到的2个ip地址和你的服务器本地ip地址比对判断,如果2个获取到的ip地址中有一个存在和本地服务器ip相同的,那就允许访问这个php文件,否则则禁止访问,程序退出就ok。
使用phpstudy搭建外网网站,用到的工具,phpstudy,步骤如下:
下载phpstudy进行安装。
2把域名解析到外网ip
3phpstudy选择其它选项菜单。
4选择站点域名管理。
网站域名输入要绑定的域名,网站目录根据喜好选择,第二域名根据需要配置,网站端口80,点击新增,然后点击保存设置并生成配置文件。
5通过ftp或者其它方式把程序放在网站目录下边。
6如果程序有数据库,选择菜单的mysql管理,创建数据库。
说明:mysql默认账号是root,默认密码root。
注意事项:phpstudy有linux和windows版本。
这个跟你的路由设置和访问方式有关。
假设你的服务端在1010501,公网IP都是8888。
假设你的客户端在 101050100-199,出口公网IP是4444
如果你的客户端以公网的形式访问,如http://8888/ipphp,则服务端获得IP都是4444。
反之以内网的形式访问,如http://1010501/ipphp,获得的IP就是1010501XX。
解决的办法,要么就是使用内网地址访问,要么使用设置一下路由,指定101050100-199访问的话,不走公网,走10网段。
不一定是你配置或者机器的问题而是机房限制了用IP直接访问网站按照国内工信部的要求网站在国内域名是需要备案的所以为了方便管理机房会设置有白名单备案后的域名提交白名单才可以正常访问而用IP直接访问也就对这项管理有所冲突另外直接用IP访问也对机器安全有所影响所以很多机房不允许直接用IP访问网站建议你可以找服务商问一下再根据原因去处理
0条评论