Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Интересная капча со смайлами
Форумы портала PHP.SU » » Работа с СУБД » Интересная капча со смайлами

Страниц (3): [1] 2 3 »
 

1. n1k86 - 28 Октября, 2011 - 18:07:36 - перейти к сообщению
Привет всем. Опять я, и у меня снова есть вопросы, которые меня озадачили.

Я делаю капчу, которая будет выводиться, типа:
Цитата:

Выберите удивлённый смайл:
• Картинка улыбающегося смайла
• Картинка удивлённого смайла
• Картинка злого смайла


И если пользователь правильно выбирает, то пропускаем.

Теперь что касается тех. части. В общем, в таблице captcha есть 6 полей : id, quest, smile1, smile2, smile3, yes.
• В id записывается... ну понятно...
• В quest записывается 1 слово, типа удивлённый или злющий илисердитый и т.д.
• В smile1 записывается html-код с уже готовым линком на 1 картинку смайла.
• В smile2 записывается html-код с уже готовым линком на 2 картинку смайла.
• В smile3 записывается html-код с уже готовым линком на 3 картинку смайла.
• В yes записывает html-код с уже готовым линком на картинку смайла ПРАВИЛЬНОГО ВАРИАНТА ОТВЕТА.

И так, едем дальше.

Пишу следующий код:

PHP:
скопировать код в буфер обмена
  1.  
  2. //Узнаём сколько всего у нас вопросов и делаем рандомный id строки.
  3.   $how = mysql_result(mysql_query("SELECT COUNT(*) FROM captcha"), 0);
  4.   $_SESSION['captcha_id'] = mt_rand(1, $how);
  5.      
  6. //Загоняем в массив данные с id, который был сгенерирован.
  7.    $result = mysql_fetch_assoc(mysql_query("SELECT * FROM captcha WHERE id='".$_SESSION['captcha_id']."'"));
  8.  


Он работает нормально, и как бы всё понятно сделано, в принципи.
Дальше делаю форму:

PHP:
скопировать код в буфер обмена
  1.  
  2. //Форма для отправки сообщения.
  3.   echo '<form method="post">
  4.  Сообщение:  <textarea name="message" maxlenght="1024"></textarea><br />';
  5.   echo 'Выберите '.$result['quest'].' смайл:<br />'; //Определяем какой нужен смайл
  6.   echo '<input type="radio" name="smile" value="что нужно сюда загнать?">'.$result['smile1'].'
  7.  <input type="radio" name="smile" value="что нужно сюда загнать?">'.$result['smile2'].'
  8.  <input type="radio" name="smile" value="что нужно сюда загнать?">'.$result['smile3'].'<br /> //Собственно варианты выбора, где присутствует 1 правильный.
  9.  <input class="button" name="submit" type="submit" value="Отправить">
  10.  </form>';
  11.  


Дальше сталкиваюсь с такой проблемой. В поле input есть значение value, в которое я почему-то не могу загнать значение переменной $result['smile*номер картинки*'], чтобы потом при проверке капчи сравнивать значение той самой переменной со значением поля yes из таблицы.

Возникает вопрос: Как в значение value засунуть переменную или как сделать подругому проверку правильности выбора? Помогите, пожалуйста.
(Добавление)
хм... сменил одинарные кавычки на двойные и всё пошло как по маслу....хм....взяли на заметку на будущее))) Всем спасибо!)
2. DeepVarvar - 29 Октября, 2011 - 16:23:07 - перейти к сообщению
n1k86 пишет:
удивлённый или злющий или сердитый
n1k86 пишет:
Узнаём сколько всего у нас вопросов
И сколько их? 10? 20?
N = кол-ву вопросов.
От 1 до N секунд с учетом времени запрос-ответ (общения с серваком) и капчу я прошел. Я даже менять ничего не буду. Тупо стану выбирать первый вариант.
3. n1k86 - 29 Октября, 2011 - 16:27:33 - перейти к сообщению
Ну так выбирай, кто тебе мешает-то??))) Тем более, она сделана так, что как-раз на первую строчку меньше всего правильных ответов. Даже если ты будешь так постоянно нажимать, то тебя остановит анти-спам, которых запрещает посылать сообщения чаще, чем раз в 30 секунд. Из этого следует, что ты просто устанешь спамить)))
4. DeepVarvar - 29 Октября, 2011 - 16:38:10 - перейти к сообщению
Я не устану. Я вообще ничего не буду делать.
Спамить будет скрипт. Круглые сутки.
После того как я построю табличку всех твоих вариантов, скрипт будет проходить любую комбинацию с первого раза.
И каждые 40 сек будет вешать новый спам.
5. n1k86 - 29 Октября, 2011 - 16:39:54 - перейти к сообщению
Если мыслить так, как мыслишь ты, то таким способом проходится любая каптча.
(Добавление)
Тем более, она генерируется рандомно, понимаешь?
6. DeepVarvar - 29 Октября, 2011 - 16:42:02 - перейти к сообщению
Нет, не любая.
Убери слово "удивлённый" из текста вопроса, и скрипт не будет знать какой выбрать.
(Добавление)
Да плевал скрипт на твое "рандомно"
7. n1k86 - 29 Октября, 2011 - 16:43:12 - перейти к сообщению
Если я уберу, то как я буду проверять строку-то? Он и так не будет знать какой вариант выбирать. Всё генерируется рандомно!
8. new01 - 29 Октября, 2011 - 16:44:24 - перейти к сообщению
n1k86, сам придумал? Мне нравится! Капча со смайлами)
9. DeepVarvar - 29 Октября, 2011 - 16:44:46 - перейти к сообщению
Мне бота написать?
Давай целевой адрес.
10. n1k86 - 29 Октября, 2011 - 16:45:07 - перейти к сообщению
new01, Сам придумал))) Спасибо))) Но это не полный код, тут только отрывки.
(Добавление)
DeepVarvar, на локалке всё...
11. DeepVarvar - 29 Октября, 2011 - 16:49:24 - перейти к сообщению
n1k86 пишет:
на локалке всё...
не ну ты ж не веришь..
Хрен с ним с неверием. Сам подумай и поймешь.
12. n1k86 - 29 Октября, 2011 - 16:53:27 - перейти к сообщению
Я верю, но ты лучше бы сказал, как защититсяУлыбка
13. DeepVarvar - 29 Октября, 2011 - 16:54:31 - перейти к сообщению
С твоим принципом вывода капчи - никак.
14. n1k86 - 29 Октября, 2011 - 16:56:38 - перейти к сообщению
Скажи, как сделать по-другому, но безопасней?
15. DeepVarvar - 29 Октября, 2011 - 17:00:32 - перейти к сообщению
DeepVarvar пишет:
Убери слово "удивлённый" из текста вопроса

 

Powered by ExBB FM 1.0 RC1