好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php获取代理ip phproxy代理

很多站长朋友们都不太清楚php获取代理ip,今天小编就来给大家整理php获取代理ip,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php 怎么获取内网IP? 2、 PHP如何获取客户端真实IP 3、 PHP实现代理IP 4、 php 获取真实IP,区分代理IP 5、 PHP获取客户端外网ip代码? 6、 如何使用PHP获取客户端及服务器端IP的封装类 php 怎么获取内网IP?

ip地址分 IPv4和IPV6两个版本。

127.0.0.1或者192.168.0.1之类的,属于IPV4的格式

127.0.0.1转换为IPv6就是 ::1

IPv6具体的格式写法,你搜索一下了解一下。

另外 ,服务端获取ip地址,是相对的。比如你在局域网内建一个服务器,在程序里获取的ip地址,就是客户端在局域网的ip  ,一般是类似 192.168.0.101 之类的,大公司的话可能  10.x.x.x

局域网的ip地址,可以直接在网络适配器上看到

而在inter网,也就是大网络上,服务端获取的ip地址,是你的连网设备获取到的公网ip ,一般一个局域网内的主机,相对于因特网上的服务器,显示的都是公网地址。

公网ip没有在本机电脑上直接显示。会显示在路由或者连网设备上。也可以通过百度搜索 ip地址,会显示你的公网ip

所以,假设一个局域网内,有两台电脑同时访问一个网上的服务器,服务器是没办法给两台电脑区分开ip地址的,显示的是一样的。只是可能得到的设备信息不一样(如:浏览器的useragent)

PHP如何获取客户端真实IP

如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。

下面提供一个函数:<?php

// 定义一个函数getIP()

function getIP(){global $ip;

if (getenv("HTTP_CLIENT_IP"))

$ip = getenv("HTTP_CLIENT_IP");

else if(getenv("HTTP_X_FORWARDED_FOR"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

else if(getenv("REMOTE_ADDR"))

$ip = getenv("REMOTE_ADDR");else$ip = "Unknow";

return $ip;}

// 使用方法:

echo getIP();?>

getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读取。

但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。

else if(getenv("HTTP_X_FORWARDED_FOR"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。

如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。

这种情况下已经确认客户端没有使用代理服务器,从而通过

else if(getenv("REMOTE_ADDR"))

PHP实现代理IP

PHP程序在服务器上运行,不在浏览者的机器上运行,只是把运行生成的HTML结果发送给浏览者的浏览器程序,不可能修改浏览者的代理设置。

PHP可以修改服务器机器的代理设置,方法是修改注册表。

php 获取真实IP,区分代理IP

使用php获取IP的方法能找到很多。

function getIp(){

if (getenv("HTTP_CLIENT_IP") strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))

$ip = getenv("HTTP_CLIENT_IP");

else if (getenv("HTTP_X_FORWARDED_FOR") strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

else if (getenv("REMOTE_ADDR") strcasecmp(getenv("REMOTE_ADDR"), "unknown"))

$ip = getenv("REMOTE_ADDR");

else if (isset($_SERVER['REMOTE_ADDR']) $_SERVER['REMOTE_ADDR'] strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))

$ip = $_SERVER['REMOTE_ADDR'];

else

$ip = "unknown";

return($ip);

}

对这段代码进行解释,这里用到了两个函数,getenv()和strcasecmp(),前一个函数获取得系统的环境变量,如果能取到值,则返回该值,不能则返回false.

$_SERVER是服务器超级全局变量数组,用$_SERVER['REMOTE_ADDR']同样可以获取到客户端的IP地址.二者的区别在于,getenv不支持IIS的isapi方式运行的php.

strcasecmp(string1,string2)字符串函数的用法是把string1和string2进行比较,如果相等返回0,如果string1大于string2,返回大于0的数,小于则返回小于0的数.

函数先使用客户IP,如果不成立尝试用代理的方法,如果不行,再使用REMOTE_ADDR。

PHP获取客户端外网ip代码?

function get_real_ip()

{

$ip=FALSE;

//客户端IP 或 NONE

if(!empty($_SERVER["HTTP_CLIENT_IP"])){

$ip = $_SERVER["HTTP_CLIENT_IP"];

}

//多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }

for ($i = 0; $i < count($ips); $i++) {

if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {

$ip = $ips[$i];

break;

}

}

}

//客户端IP 或 (最后一个)代理服务器 IP

return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);

}

如何使用PHP获取客户端及服务器端IP的封装类

本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下:

客户端IP相关的变量:

1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。

2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。

3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。

服务器端IP相关的变量:

1. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。

2. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。

类如下:

class getIP{

function clientIP(){

$cIP = getenv('REMOTE_ADDR');

$cIP1 = getenv('HTTP_X_FORWARDED_FOR');

$cIP2 = getenv('HTTP_CLIENT_IP');

$cIP1 ? $cIP = $cIP1 : null;

$cIP2 ? $cIP = $cIP2 : null;

return $cIP;

}

function serverIP(){

return gethostbyname($_SERVER["SERVER_NAME"]);

}

}

$getIP = new getIP();

$clientIp = getIP::clientIP();

$serverIp = getIP::serverIP();

echo 'Client IP is ',$clientIp,'<br />';

echo 'Server IP is ',$serverIp,'<br />';

关于php获取代理ip的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php获取代理ip phproxy代理的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did168450
更新时间:2023-04-11   阅读:71次

上一篇: 大学转行学php php转前端好不好找工作

下一篇:php淘宝自动登陆 淘宝网页自动登陆怎么取消

相关资讯

最新资料更新

  • 1.织梦DEDECMS dede:arclist,dede:list获取附加表字段内容的方法
  • 2.dedecms列表不显示第一个元素如分隔符的简单方法
  • 3.dedecms文章评论功能用法分析
  • 4.dedecms专题节点ID不能出现重复问题的解决方法
  • 5.dedecms织梦tag keyword调用相关文章
  • 6.dedecms v5.7与v5.6栏目增加缩略图的方法
  • 7.dedecms的sql标签中传入参数的方法
  • 8.织梦DedeCms的安全问题解决办法(安全设置)
  • 9.织梦DedeCMSv5.7安装初始化数据体验包失败的解决方法
  • 10.dedecms使用getall获取当前页面tag标签(超连接)的方法
  • 11.网站子目录安装dedecms导致网页布局混乱的解决方法
  • 12.织梦DEDECMS后台验证码错误不能正常验证的3种可能原因和解决方法
  • 13.dedecms tag标签实现随机颜色和字体大小
  • 14.织梦列表页分页错位(分页显示为竖排)的解决方法
  • 15.dedecms联动类别的图文使用方法
  • 16.不用注册会员也能为DedeCms增加邮箱订阅的方法
  • 17.DedeCMS调用相关文章likearticle附加自定义字段
  • 18.Dedecms无法保存远程图片到本地服务器的解决方法
  • 19.织梦dede去除Power by DedeCms的方法
  • 20.dede查询列表中单独显示查到了多少条记录

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]