Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> случайное число для купонов 
:(
    Опции темы
Spiker
Дата 29.6.2013, 01:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 25.5.2005
Где: Спортзал

Репутация: -2
Всего: -2



Я думаю о том как разработать генератор случайных чисел для купонов. Купоны будут позже приобретены в магазине.

при генерации надо выбрать год, какой раз производиться генерация и количество чисел с генерировать
Мы выберем 
год - 1994
производство - 6
количество карт - 9000

Мне предложили один метод чтобы случайное число выглядело следушим образом:
год-какой раз производится генерация-количество чисел (одно из чисел 0 до числа которое было выбрано пользователем)-случайное число 

1994-6-5312-3 - пример число которое было бы произведено

Мне интересны ваше мнение на сколько по вашему мнению это число будет случайным так по моему мнению это число будет довольно легким для отгадки. Имея знания о том какие код есть на картах можно будет по идеи его легко отгадать. 

год будет использоваться тот что сейчас, то есть 2013. 
(6) - это число минимум 1, х>0
следующее число до 4 чисел от 0 до 9999 (max количество карт)
после это случайное число, одна цифра.

по моему мнению это можно будет отгадать.
пользователь сможет ввести не правильное уникальное число в систему 3 раза после чего блокировка на 15 минут.

Это сообщение отредактировал(а) Spiker - 29.6.2013, 11:11


--------------------
Даваите жить дружно! (Леопольд.) :shy67:
PM MAIL MSN   Вверх
SergV
Дата 29.6.2013, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



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

По сути как я думаю, получатель должен просто получать на емайл ссылку с ключом, где будет закодированы номер, время и данные получателя. В таком случае, что бы подделать такую ссылку нужно будет знать кому отправлена ссылка, и в каком формате.
Реализовать такое можно по принципу - номер купона(00039463) + время(01.04.2013 06:22:34) + имя или id получателя(Иван Иванов Иванович | 4524). Всё это скажем шифруем в MD5, можно с солью, при этом последовательность можно сделать случайной, сохраняем ссылку в базу, и шлём её ссылкой или кодом получателю. Получатель может воспользоваться ссылкой, или вставить в нужное поле на сайте присланный код.
Подделать такое будет не реально, так как кроме номера купона и даты, нужно будет ещё знать и время с точностью до секунды, и полное имя клиента или его ид.
Тут только взлом сайта и доступ к базе позволит получить список MD5 ключей, что не каждый сможет сделать..
Минус такого подхода, длинный код MD5 шифрования. Его можно укоротить используя укороченные данные типа 39463 + 010413 062234 + ИИИ(4524), но это всё равно в сравнении с 1994-6-5312-3 длинней будет, но намного надёжней.

Может ещё есть какие варианты, но в голову пока не приходят. :)

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM   Вверх
IZ@TOP
Дата 30.6.2013, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Генерируйте номер купона при его выдаче. Таким образом можно сделать достаточно короткий и неугадываемый код.
Для случайности можно ввести серию номера купона и ограничить его срок действия.

Вот пример, в котором серия купона меняется каждый месяц и может быть действительно до повторения 52 цикла.

Код

$loop = fmod(date("Ym"), 51);
$range = array_merge(range('a', 'z'), range('A', 'Z'));
$serial = $range[$loop] . rand(11, 99) . '-';
while(strlen($serial) < 7) {
    $serial .= $range[rand(0, 51)];
}

echo $serial, "\n";


Таким образом будем иметь что-то вроде таких номеров, отгадать которые нереально при ваших объемах купонов:

Цитата

j71-NxaK


Учтите, что в данном примере купоны регистрозависимы ;)
И еще, для защиты от дубликатов рекомендую в цикле генерировать с проверкой на совпадение серии в пределах цикла.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
alfaclub
Дата 2.7.2013, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.7.2013
Где: RU

Репутация: нет
Всего: нет



да уж.  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1283 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.