使用PHP生成随机IP地址

时间:2012-04-22 14:02:31

标签: php numbers

我想生成一个随机的IP地址。

6 个答案:

答案 0 :(得分:36)

long2ip(rand(0, "4294967295"))

Source

答案 1 :(得分:18)

检查mt_rand func

你可能想要运行它:

<?php
    $randIP = "".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255);
?>

答案 2 :(得分:5)

$ip = long2ip(mt_rand());

这种方式稍微可读。

答案 3 :(得分:4)

根据这里的一些回答,我决定添加答案来纠正错误 ......

mt_rand(int $min, int $max);

部分样本使用此功能,最大值 4294967295 。但是这个函数只支持 2147483647 的最大值,实际上只有一半。传递更高的数字将返回 false 。使用此函数whitout传递任何东西也只会提供所需值的一半。所以

long2ip(mt_rand());

将返回最大IP 127.255.255.255

要获得全部范围,您需要一些:

long2ip(mt_rand()+mt_rand());

但即使在此示例中,您最多也会获得255.255.255.254。因此,要获得全范围,您需要第三个mt_rand()

在短手代码中获取总范围的正确方法是:

$ip = long2ip(mt_rand()+mt_rand()+mt_rand(0,1));

小心使用+而不是*。因为max value * max value会返回255.255.255.255,但是获得较低IP的机会不再那么好了。

答案 4 :(得分:1)

如果您有任何:

,您还可以从自己的网络服务器日志中获取有效IP池
  

cat / var / log / apache2 / access_log | cut -d'' - f1 | egrep -v'[a-z]'| sort | uniq&gt;   lotsofip.txt

然后在php:

$ips = file('lotsofip.txt');    
echo $ips[array_rand($ips)];

答案 5 :(得分:-1)

$ip = intval(rand()%255).'.'.intval(rand()%255).'.'.intval(rand()%255).'.'.intval(rand()%255);