|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Генерация кодов |
Генерация кодов |
В php я нуб полнейший, многих нюансов не знаю.
Понадобилось написать скрипт для генерации чего-то в стиле промо кодов. Вот скрипт: Code <?php function generate() { $code_length = 16; $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; for ($p = 0; $p < $code_length; $p++) { if (!($p % 4) && $p != 0) $string .= '-'; $string .= $characters[rand(0, strlen($characters))]; } return strtoUpper($string); } for ($i = 0; $i < 25; $i++) { echo generate(); echo "<br>"; } ?> Скрипт, в общем-то, работает, но иногда выводит коды не 16ти значной длины, а 15ти или даже 14ти. Скорее всего ошибка настолько очевидна, что я не могу ее найти) Подскажите, в чем косяк.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
Первый дубль:
$code_length = 16; попробуй значение здесь поменять - как будет выводить. Второй дубль: Смотри условия, может там что-то не так задано Третий дубль: Косяки бывают везде, может даже этот скрипт полностью правильный, разве что просто не хочет. Яркий пример - писал на С++ тетрис, всё нормально, адекватно, поставил таймер - считает секунды, добавил счёт и окошко с сменой фигур - таймер стал перескакивать одну цифру (1-3-5-7-9), а код был верным
Сообщение # 2 написано 03.10.2012 в 21:46
|
Всё просто как божий день.
$string .= $characters[rand(0, strlen($characters)-1)]; Если длина строки 16, то при счете от 0 последнее зачение 15, а не 16 ...
мне фиолетово какой у меня рейтинг, можете поставить хоть минус миллион...
Не в плюсах счастье... Помогаю тем, кто хочет чтобы ему помогли, а не сделали за него. |
Я убирал все вплоть до голого цикла перебора, ошибка где-то в цикле, видимо конкретно для каких-то значений.
Зависимость я понять не смог.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 4 написано 03.10.2012 в 22:09
|
Проверь где ошибка - при построении запроса (попробуй поставь к примеру 17)
Quote (Dimitro) $code_length = 16; Quote (Dimitro) for ($p = 0; $p < $code_length; $p++) { if (!($p % 4) && $p != 0) Или при непосредственно самом выводе информации, это тут Quote (Dimitro) for ($i = 0; $i < 25; $i++)
Сообщение # 5 написано 03.10.2012 в 22:12
|
Dimitro, Dark_Mefodii, вы явно не желаете прочесть мой предыдущий пост, и поставить в нужное место эту долбаную -1 !!!
мне фиолетово какой у меня рейтинг, можете поставить хоть минус миллион...
Не в плюсах счастье... Помогаю тем, кто хочет чтобы ему помогли, а не сделали за него.
Сообщение # 6 написано 03.10.2012 в 22:44
|
Quote (Кот_ДаWINчи) $string .= $characters[rand(0, strlen($characters)-1)]; Спасибо, вкурил, так и знал, что в представлении элементов массива напутал. Quote (Кот_ДаWINчи) Dimitro, Dark_Mefodii, вы явно не желаете прочесть мой предыдущий пост, и поставить в нужное место эту долбаную -1 !!! Когда я постил свой, вашего еще не было, после этого с темы я вышел и зашел только сейчас.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
Данная тема была перемещена из раздела Web форум.
Причина перемещения: Вопрос решен. Переместил: Dimitro.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 8 написано 03.10.2012 в 22:51
|
| |||
| |||