使用PHP生成随机IP地址

use*_*598 13 php numbers

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

Pav*_*hov 37

long2ip(rand(0, "4294967295"))
Run Code Online (Sandbox Code Playgroud)

资源

  • 哦,优雅! (2认同)
  • 说实话,这里是来源:http://www.php.net/manual/en/function.long2ip.php#61208 (2认同)
  • 经过测试,并且始终返回0.0.0.0 (2认同)

Sim*_*imY 21

检查mt_rand函数.

你可能想要运行这个:

<?php
    $randIP = "".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255);
?>
Run Code Online (Sandbox Code Playgroud)


小智 5

$ip = long2ip(mt_rand());
Run Code Online (Sandbox Code Playgroud)

这种方式稍微可读.


Dwz*_*wza 5

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

mt_rand(int $min, int $max);
Run Code Online (Sandbox Code Playgroud)

一些样本使用此函数,最大值为4294967295。但是这个函数只支持最大值2147483647,实际上是一半。传递更高的数字将返回false。使用此函数而无需传递任何内容也只会给出所需值的一半。所以

long2ip(mt_rand());
Run Code Online (Sandbox Code Playgroud)

将返回最大 ip 127.255.255.255

要拥有全系列,您需要一些类似的东西:

long2ip(mt_rand()+mt_rand());
Run Code Online (Sandbox Code Playgroud)

但即使在此示例中,您也将最大程度地获得255.255.255.254. 因此,要拥有完整的范围,您需要第三个mt_rand().

在简写代码中获得总范围的正确方法是:

$ip = long2ip(mt_rand()+mt_rand()+mt_rand(0,1));
Run Code Online (Sandbox Code Playgroud)

注意使用 + 而不是 *。因为max value*max value255.255.255.255按预期返回,但获得较低 ip 的机会不再那么好。为了保持使用 * 的好机会,您可以执行以下操作:

$ip = long2ip((mt_rand()*mt_rand(1,2))+mt_rand(0,1));
Run Code Online (Sandbox Code Playgroud)