Создание случайного IP-адреса с помощью PHP

Я хотел бы создать случайный IP-адрес.

Ответ 1

Проверьте mt_rand func.

Вероятно, вы захотите запустить это:

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

Ответ 3

$ip = long2ip(mt_rand());

Этот способ немного читабельнее.

Ответ 4

В соответствии с некоторыми ответами здесь я решил добавить ответ, чтобы исправить некоторые ошибки, которые были сделаны...

mt_rand(int $min, int $max);

Некоторые образцы использовали эту функцию с максимальными значениями 4294967295. Но эта функция поддерживает только максимальное значение 2147483647, что на самом деле половина. Передача большего числа вернет false. Использование этой функции без передачи чего-либо также даст только половину необходимого значения. Итак,

long2ip(mt_rand());

вернет max 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 как expacted, но шанс получить более низкий ip больше не так хорош.

Ответ 5

Вы также можете получить пул действительных IP-адресов из ваших собственных журналов веб-сервера, если у вас есть:

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

а затем в php:

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

Ответ 6

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