Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генератор кодов
 
 автор: *m*   (09.05.2009 в 15:53)   письмо автору
 
 

Доброго времени суток!)

Встала задача, подключить генератор кодовых слов.
Нужно чтобы скрипт генерировал различные кодовые слова ( цифры и буквы , длина приблизительно 7 символов, можно больше) и также нужно чтобы генерация разных слов произвадилась при каждом новом обращении к основному скрипту. (То есть есть основной скрипт у меня, в него мне нужно подключить генератор, который будет генрировать указанное выше и помещать в переменную)

Подскажите, как реализовать, если не трудно приблизительный код.
Заранее спасибо.

  Ответить  
 
 автор: nikita2206   (09.05.2009 в 16:18)   письмо автору
 
   для: *m*   (09.05.2009 в 15:53)
 

<?
$length 
mt_rand(510);
$str '';
for(
$i 0$i $length$i++){
    
$str1 base_convert(mt_rand(036), 1036);
    if(
mt_rand(01)) $str1 strtoupper($str1);
    
$str .= $str1;
}
echo 
$str;

-- это генератор

  Ответить  
 
 автор: *m*   (09.05.2009 в 17:10)   письмо автору
 
   для: nikita2206   (09.05.2009 в 16:18)
 

Спасибо) если не трудно не могли бы вы описать, что за что в этом генераторе отвечает?)

  Ответить  
 
 автор: nikita2206   (09.05.2009 в 17:20)   письмо автору
 
   для: *m*   (09.05.2009 в 17:10)
 

ну его(генератора) часть с функцией base_convert мне давно както подсказал Трианон и я абсолютно непонял сути...
такчто, надо понять основы систем счисления, там суть такая что во всех системах счисления(где основание больше 10) такие числа, как 10, 11, 12, 13, 14, 15 и так до 36 преобразуются в буквы, тоесть 10 - это А, а 11 - это B, 12 - это C и т.д.
я думаю я попытался обьяснить самую сложную для понимания часть, всё остальное - это просто генерация длины слова и и случайных чисел от 0 до 36...

  Ответить  
 
 автор: sim5   (09.05.2009 в 17:29)   письмо автору
 
   для: 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.

  Ответить  
 
 автор: nikita2206   (09.05.2009 в 17:33)   письмо автору
 
   для: 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

  Ответить  
 
 автор: *m*   (09.05.2009 в 18:20)   письмо автору
 
   для: ~~   (09.05.2009 в 17:29)
 

Огромнейшее спасибище) Не сомневался в знаниях здешней аудитории)

Подскажите чтобы сделать выражение кода примерного вида: k8uOpb76 , нужно создавать несколько таких генераторов и потом состыковывать результаты или можно все в этом генераторе настроить?

  Ответить  
 
 автор: *m*   (12.05.2009 в 14:08)   письмо автору
 
   для: *m*   (09.05.2009 в 18:20)
 

У меня еще один вопрос, а как теперь это применить?

Дело в том, что сгенерированное случайное число помещенное в переменную, в итоге не работает, когда я ввожу его в поле для секретного слова или я что-то не так делаю опять..

Щас попытаюсь объяснить:

вот пример скрипта

<?
/*Генератор числа*/
$length mt_rand(510);
?>
<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 .., и т.д)

  Ответить  
 
 автор: nikita2206   (12.05.2009 в 14:50)   письмо автору
 
   для: *m*   (12.05.2009 в 14:08)
 

боюсь вы не до конца понимаете принцип работы PHP...
дело в том что при каждом запросе этого файла переменная $length разная, т.к. она равна рандомному числу...
допустим вы запустили этот скрипт, он прировнял переменную $length к 6 ввели в форму 6, но форма ссылается на этот же файл и когда он снова открывается, но уже с переданными POST переменными, он снова генерирует случайное число для переменной $length и сравнивает $length( допустим теперь она равна 8 ) с $_POST['cod'] и они не равны...
для вашего случая надо использовать сессии, ссылку немогу дать, поищите про них на php.su

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования