Для начала мы познакомимся с такими функциями как rand () и mt_rand().
Синтаксис их очень прост:
PHP код:
//Функция rand ()
print rand($min, $max);
echo "<br>";
//Функция mt_rand ()
print mt_rand($min, $max);
Вместо переменных $min и $max, подразумевается минимальное и максимальное число, то есть диапазон:
Например от 1 до 100.
Да и ещё хочу сказать, что тип, что функция rand () что mt_rand(), принимают только целочисленный, то есть integer. Давайте посмотрим использование rand () и mt_rand() на примере:
PHP код:
<?php
print rand (); //Будет выведен случайный диапазон
echo "<br />";
print rand (6,35); //Число будет генерироваться в диапазоне от 6 до 35
echo "<br />";
print mt_rand(); //Случайный диапазон
echo "<br />";
print mt _rand(5, 20); // Будет сгенерировано число в диапазоне от 5 до 20
?>
Посмотрев на все это, у вас наверно возникает вопрос? В чем разница между функциями? На самом деле mt_rand () это модернизированная функция rand().
А теперь давайте напишем генератор паролей в том диапазоне, который введет пользователь. Для этого мы создадим файл со следующим содержимым:
PHP код:
<html>
<head>
<title>Генератор паролей</title>
</head>
<body>
<center>
<center><h1>Генератор паролей</h1></center>
<br />
<center><h5>Введите в каком диапазоне будет генерироваться пароль:</h5>
<br />
<form method="POST" action="genpass.php">
От:<input type="text" name="one" size=5 maxlength=5> До: <input type="text" name="two" size=5 maxlength=5>
<input type="submit" value="Генерировать" name="genpass">
<?php
//Проверяем нажата ли кнопка
if (isset($_POST['genpass']))
{
if ((!$_POST['one']) and (!$_POST['two']))
{
echo "Данные не введены";
}
else
{
//Присваиваем переменным $one и $two значения что ввел пользователь
$one=$_POST['one'];
$two=$_POST['two'];
// Присваиваем $result генерированное число
$result= mt_rand($one, $two);
echo "<br /><textarea>$result</textarea>";
exit;
}
}
?>
</form>
</center>
</body>
</html>
Как видите все предельно просто, сначала мы создаем форму, ссылающуюся на этот же файл, после чего пишем запрос, проверяем, нажата ли кнопка, если кнопка нажата, идем дальше и проверяем, ввел ли пользователь данные в поля. Если данные не введены, то выводим сообщение, о том ,что нужно их ввести! Если же все в порядке, присваиваем переменным $one и $two те данные что ввел пользователь в поля. Далее генерируем код с наименьшим числом $one и наибольшим $two , предварительно присвоив весь этот процесс переменной $result, после чего выводим эту же переменную в текстовом поле! Надеюсь, вы поняли, как работает функция rand().
У вас, наверное возникнет вопрос, а как генерировать пароль не только цифирный но и буквенный? Для этого в PHP предусмотрена функция str_shuffle().
Пример использования следующий:
PHP код:
<?php
//Присваиваем переменной строку с теми символами которые хотим генерировать
$string ='abcdefghfkprtljzxy';
Print str_shuffle($string);
?>
Как вы уже догадались, функция генерирует, то что сама же и возвращает!
Также для генерирования случайных уникальных значений широко используется функция uniqid(). Функция uniqid() генерирует уникальный идентификатор на основе текущего времени, выраженного в микросекундах (с помощью php.net). Использование данной функции очень удобно при создании идентификаторов сессий и ключей форм.
Пример функции:
PHP код:
<?php
//Пример использования uniqid()
print uniqid();//По умолчанию
echo "<br />";
print uniqid("NETTUTS", TRUE);
//Добавлен дополнительный префикс и установлено значение TRUE для more_entropy
?>
================================================== ========
Автор: Станислав (mzcoding) цитата: Генер