‘壹’ php伪造ip获取网页内容,求高手
伪造IP是不可能的,HTTP协议是机遇TCP,你发送GET命令过去必须留有准确的IP地址,否则对方无法把结果发给你,你与服务器xxx.xxx.xx的通讯相当于写信,你匿名写信只能攻击,要获取返回的东西必须提交真实的地址。
无论使用CURL还是别的方法,都要受前面的基本规则限制。
编程上已经没有办法可走了,你可以考虑使用代理,通过代理服务器去获取数据,查封就换个代理服务器。不过现在代理服务器是很难找的。
‘贰’ 如何用php实现IP限制
<?php
error_reporting(7);
session_start();
// 发送字符头信息
if ($headercharset)
header("Content-Type:text/html; charset=gb2312");
// 加载公共文件
require_once("config.php");
require_once("global.php");
require_once("db_mysql.php");
/***************** 进行客户端能否访问本网站校验 ************/
// 获取客户端IP
if(getenv('HTTP_CLIENT_IP')) {
$client_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
} else {
$client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
// 分解客户端IP
$cip = explode(".", $client_ip);
// 连接数据库
$db = new DB_Sql();
$err = $db->connect();
/* 限制远程IP访问, PS: 这段代码真晕,呵呵,用了8个if, -_-# */
// 从数据库中提取存储的要限制的IP地址
$query_str = "SELECT limit_ip FROM us_limitip";
$db->query($query_str);
// 把结果循环提取,一个个进行校验
while ($db->next_record())
{
$limit_ip = $db->f("limit_ip");
$lip = explode(".", $limit_ip);
// 如果限制IP的第一个是*或者是0的话就跳到错误页
if (($lip[0]=='*') || ($lip[0]=='0'))
header("Location:../error.php?errid=300");
// 如果刚好客户端IP等于我们限制IP就跳到错误页
if ($client_ip==$limit_ip)
header("Location:../error.php?errid=300");
// 如果第一组IP一致进行第二组IP的匹配
if ($cip[0] == $lip[0])
{
// 如果第二组限制IP是*就跳到错误页
if ($lip[1]=='*')
header("Location:../error.php?errid=300");
// 第二组IP匹配就进行第三组IP匹配
if ($cip[1]==$lip[1])
{
// 如果第三组限制字符是*就跳到错误页
if ($lip[2]=='*')
header("Location:../error.php?errid=300");
// 如果第三组IP匹配就跳到第三组校验
if ($cip[2]==$lip[2])
{
// 如果第四组限制IP是*或0就跳到错误页
if (($lip[3]=='*') || ($lip[3]=='0'))
header("Location:../error.php?errid=300");
}
}
}
}
// 释放数据库查询结果
$db->free();
/****************** IP校验结束 ******************/
?>
‘叁’ php ip2long有什么作用
ip2long 把ip地址转换成整型,很多时候都把ip转换成整型再存进数据库
long2ip 则相反,把整型还原为ip地址
‘肆’ PHP如何将字符型转换成整形
intval
(PHP 3, PHP 4, PHP 5)
intval -- 获取变量的整数值
描述
int intval ( mixed var [, int base] )
通过使用特定的进制转换(默认是十进制),返回变量 var 的 integer 数值。
var 可以是任何标量类型。intval() 不能用于 array 或 object。
注: 除非 var 参数是字符串,否则 intval() 的 base 参数不会有效果。
参见 floatval()、strval()、settype() 和 类型戏法。
‘伍’ Php隐藏或修改ip
ip不可以隐藏或者修改。如果修改,你可以用vpn或者拨号上网改ip。
‘陆’ php中整形转换为浮点型,并精确的小数点后两位
PHP 中sprintf函数可以将整数格式化为浮点格式。比如格式化参数:%nf;其中,n 表示小数点后的位数。比如:
<?php
$num=9.8;
$res=sprintf("%.2f", $num);
//输出:9.80
?>
‘柒’ php怎么强制转换浮点成整形
浮点转换成整型有三种函数
1、floor ( float value) 舍去法取整又称向下取整,将小数部分舍去取整
<?php
echo floor(6.1); //结果是6
echo floor(6.9);//结果是6
?>
2、ceil 进一法取整,有小数部分则进一位
<?php
echo ceil(6.1); //结果是7
echo ceil(6.9);//结果是7
?>
3、round 浮点数进行四舍五入
<?php
echo round(6.1); //结果是6
echo round(6.9);//结果是7
?>
‘捌’ 如何向PHP伪造自己的ip
要看具体代码是怎么写的,如果代码写得不好是有可能伪造的。
获取IP的方法有几种,通过例子看一下,这个是ThinkPHP里的获取IP的函数:
/**
* 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @param boolean $adv 是否进行高级模式获取(有可能被伪装)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}
$_SERVER['HTTP_CLIENT_IP'] 是HTTP信息中的IP,存在于http请求的header中,可以伪造;
$_SERVER["REMOTE_ADDR"] 可取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。不可以伪造,但可以用代理。
$_SERVER["HTTP_X_FORWARDED_FOR"] 可以透过代理服务器取得客户端的真实 IP 地址,但有时候也不管用,也可以伪造。
‘玖’ php 修改服务器IP
1.确认执行该PHP脚本的系统具备修改服务器IP/子网掩码/网关的权限.
2.确认你的PHP运行执行shell_exec的函数,这个函数在安全模式下是被屏蔽的.
3.确认你在shell_exec里面执行的系统命令行是正确的.
简单的例子:
$
vi
test.php
#!/usr/bin/php
<?php
$rsl
=
shell_exec("fconfig
eth0
192.168.1.2
netmask
255.255.255.0");
//改ip和子网掩码的.
$rsl2
=
shell_exec("route
add
default
gw
192.168.1.1");
//设置网关
echo
$rsl."\n".$rsl2;//看看返回的结果.
?>
$
chmod
755
test.php
--
给脚本增加执行的权限
$
./test.php
参考其他函数:
exec()
system()
等等.
windows下怎么做?
我又没钱买windows我怎么知道!
‘拾’ php 怎样将有范围的ip转化为整型范围
<?php
$ip=$_SERVER["REMOTE_ADDR"];//获取客户端IP
$longip=ip2long($ip);
//程序员通常将IP转换成整形写入数据库
//读取的时候再把它转成标准的IP地址
$ip=long2ip($longip);
echo'<pre>';
print_r(array($longip=>$ip));
?>