|
|
|
| Доброго времени суток!)
Встала задача, подключить генератор кодовых слов.
Нужно чтобы скрипт генерировал различные кодовые слова ( цифры и буквы , длина приблизительно 7 символов, можно больше) и также нужно чтобы генерация разных слов произвадилась при каждом новом обращении к основному скрипту. (То есть есть основной скрипт у меня, в него мне нужно подключить генератор, который будет генрировать указанное выше и помещать в переменную)
Подскажите, как реализовать, если не трудно приблизительный код.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: *m*
(09.05.2009 в 15:53)
| |
<?
$length = mt_rand(5, 10);
$str = '';
for($i = 0; $i < $length; $i++){
$str1 = base_convert(mt_rand(0, 36), 10, 36);
if(mt_rand(0, 1)) $str1 = strtoupper($str1);
$str .= $str1;
}
echo $str;
|
-- это генератор | |
|
|
|
|
|
|
|
для: nikita2206
(09.05.2009 в 16:18)
| | Спасибо) если не трудно не могли бы вы описать, что за что в этом генераторе отвечает?) | |
|
|
|
|
|
|
|
для: *m*
(09.05.2009 в 17:10)
| | ну его(генератора) часть с функцией base_convert мне давно както подсказал Трианон и я абсолютно непонял сути...
такчто, надо понять основы систем счисления, там суть такая что во всех системах счисления(где основание больше 10) такие числа, как 10, 11, 12, 13, 14, 15 и так до 36 преобразуются в буквы, тоесть 10 - это А, а 11 - это B, 12 - это C и т.д.
я думаю я попытался обьяснить самую сложную для понимания часть, всё остальное - это просто генерация длины слова и и случайных чисел от 0 до 36... | |
|
|
|
|
|
|
|
для: nikita2206
(09.05.2009 в 17:20)
| | base_convert - конвертирует число между различными базами.
string base_convert (string number, int frombase, int tobase)
Возвращает строку, содержащую число number, представленное с базой tobase. База, в которой number даётся, специфицируется в frombase. И frombase, и tobase должны быть в диапазоне от 2 до 36 включительно. Цифры в числах с базой выше 10 будут представлены буквами a-z, когда a означает 10, b означает 11 и z означает 35. | |
|
|
|
|
|
|
|
для: sim5
(09.05.2009 в 17:29)
| | хм.. я то суть знаю, если я неправильно рассказал, то так и скажите) | |
|
|
|
|
автор: ~~ (09.05.2009 в 17:29) |
|
|
для: nikita2206
(09.05.2009 в 17:20)
| | В десятичной системе счисления 10 цифр, в 36-й -- 36, только в роли "цифр" играют 0, 1, ..., a, b, ...
Это не основы систем счисления, а потому что так захотелось авторам base_convert(). Можно использовать любую таблицу символов для N-ричной системы счисления, главное, чтобы она взаимнооднозначно соответствовала числам от нуля до N-1 | |
|
|
|
|
|
|
|
для: ~~
(09.05.2009 в 17:29)
| | Огромнейшее спасибище) Не сомневался в знаниях здешней аудитории)
Подскажите чтобы сделать выражение кода примерного вида: k8uOpb76 , нужно создавать несколько таких генераторов и потом состыковывать результаты или можно все в этом генераторе настроить? | |
|
|
|
|
|
|
|
для: *m*
(09.05.2009 в 18:20)
| | У меня еще один вопрос, а как теперь это применить?
Дело в том, что сгенерированное случайное число помещенное в переменную, в итоге не работает, когда я ввожу его в поле для секретного слова или я что-то не так делаю опять..
Щас попытаюсь объяснить:
вот пример скрипта
<?
/*Генератор числа*/
$length = mt_rand(5, 10);
?>
<form method=POST>
<input name="cod" value="код" type="text">
<input type="submit" value=" дальше ">
<?
if ($_POST['cod']==$length) {/*Дать доступ*/};
else { echo "<p>Неверный код</p>";
}
?>
|
Я вывожу оператором эко переменную $length, чтобы видеть какое число сгенерировалось в данный момент, ввожу сгенерированное число в поле для секретного кода, но доступа дальше не получаю, получаю "Неверный код". Но точно известно что число тоя правильное ввожу.
Почему тогда скрипт не работает?
И еще вопрос, как можно передать это сгерированный код в другой файл, но уже ввиде числа а не переменной, или чтобы в другой файл полетела переменная, а там она преобразовалась в код. Тоесть передается например переменная $length, в файл какойтотам.php и там она эта переменаая предстает в нужном месте в виде сгенерированного кода(5 или 10 .., и т.д) | |
|
|
|
|
|
|
|
для: *m*
(12.05.2009 в 14:08)
| | боюсь вы не до конца понимаете принцип работы PHP...
дело в том что при каждом запросе этого файла переменная $length разная, т.к. она равна рандомному числу...
допустим вы запустили этот скрипт, он прировнял переменную $length к 6 ввели в форму 6, но форма ссылается на этот же файл и когда он снова открывается, но уже с переданными POST переменными, он снова генерирует случайное число для переменной $length и сравнивает $length( допустим теперь она равна 8 ) с $_POST['cod'] и они не равны...
для вашего случая надо использовать сессии, ссылку немогу дать, поищите про них на php.su | |
|
|
|