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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Капча

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Acuna
Отправлено: 03 Ноября, 2008 - 11:28:28
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Всем привет! Я меняю в скрипте обычную цифровую капчу на капчу с вопросами (типа "Столица Франции?"). Вид капчи такой:
PHP:
скопировать код в буфер обмена
  1. <img src=\"./captcha.php\" alt=\"Код безопасности\" border=\"0\" />
(Т. е. просто картинка) А в src прописан путь к ее файлу. А как мне сделать, если мне нужна не картинка, а просто обращение к файлу капчи с вопросами? (она ведь текстовая). Пробовал функции readfile() и прочие. Но они просто выводят содержимое файла на месте капчи. Заранее благодарен!

(Отредактировано автором: 03 Ноября, 2008 - 11:29:22)



-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 03 Ноября, 2008 - 11:34:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




нужно сделать ссылку на скрипт, а скрипт шлет заголовок, что контент тайп aplication/octet-stream(не помню как точно правильно), а потом readfile туда. Появится предложение сохранить файл
 
 Top
Acuna
Отправлено: 03 Ноября, 2008 - 11:53:21
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




В смысле? А можно по-подробнее?
(Добавление)
Извиняюсь за вопрос, а как вообще можно сделать капчу с вопросами?


-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 03 Ноября, 2008 - 15:01:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. header("Content-Disposition: attachment; filename='имяподкоторымнадосохранитьфайл.расширение'");
  2. header("Accept-Ranges: bytes");
  3. header("Content-Length: ".filesize('имяфайласкоторымонхранитсянасервере.расширение'));
  4. header("Content-type: application/octet-stream");
  5. print file('имяфайласкоторымонхранитсянасервере.расширение')

(Добавление)
Я так понял, что проблема в том, что вы не хотите выводить текстовый файл в браузер, а хотите, чтоб получилось окошко для сохранения. Только куда вы это приткнуть хотите?
 
 Top
Ыыы
Отправлено: 03 Ноября, 2008 - 16:45:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008  
Откуда: Россия, Хабаровск


Помог: 0 раз(а)




Цитата:
как мне сделать, если мне нужна не картинка

А какой тогда смысл каптчи? Улыбка я тоже хочу модератором быть... Улыбка

(Отредактировано автором: 03 Ноября, 2008 - 16:47:58)

 
 Top
IOpeH
Отправлено: 03 Ноября, 2008 - 16:56:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Champion вроде темы перепутал )))

зы Champion, жесткий у тебя аватар )))

(Отредактировано автором: 03 Ноября, 2008 - 16:57:34)

 
 Top
Champion Супермодератор
Отправлено: 03 Ноября, 2008 - 17:03:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




IOpeH пишет:
Champion вроде темы перепутал )))

Я на это отвечал
Acuna пишет:
А как мне сделать, если мне нужна не картинка, а просто обращение к файлу капчи с вопросами? (она ведь текстовая). Пробовал функции readfile() и прочие. Но они просто выводят содержимое файла

(Добавление)
IOpeH пишет:
зы Champion, жесткий у тебя аватар )))

Мне тоже нравится Радость
 
 Top
valenok Модератор
Отправлено: 03 Ноября, 2008 - 22:49:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




вместо вот этого
<img src=\"./captcha.php\" alt=\"Код безопасности\" border=\"0\" />
нужно вывести простой текст.

Читатьй файл можно к примеру функцией file() , тогда будет проще отделять вопросы друг от друга как мне кажется.


-----
Truly yours, Sasha.
 
My status
 Top
Гость
Отправлено: 05 Ноября, 2008 - 20:20:38
Post Id


УДАЛЁН










А что запрещает воспользоваться библиотекой типа GD и запихать в картинку необходимый текст
P.S. Помоему в связи с неправильным толкованием терминов, забыи что такое КАПЧА, а капча это средство защиты от авторегистарций к примеру. А текст любой робот с легкостью прочитает Улыбка
 
 Top
valenok Модератор
Отправлено: 05 Ноября, 2008 - 21:55:39
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




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


-----
Truly yours, Sasha.
 
My status
 Top
Jonas
Отправлено: 06 Ноября, 2008 - 11:56:57
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2008  


Помог: 0 раз(а)




Попробуй сделать то же самое с массивом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //Массив с парами вопрос/ответ. Может быть любой длины.
  4. $questions = array();
  5.         $questions["Столица Франции"] = "париж";
  6.         $questions["Столица Германии"] = "берлин";
  7.         $questions["Столица Бельгии"] = "брюссель";
  8.         $questions["Столица Нидерландов"] = "амстердам";
  9.         $questions["Столица Испании"] = "мадрид";
  10.  
  11. //Если браузеру не передается ответ, то выводится вопрос.
  12. if ($_POST['Question'] == "")
  13.         {echo html_question();}
  14.         else
  15.         {echo html_answer($_POST['Question'], $_POST['Answer']);}
  16.  
  17.  
  18.  
  19. function html_question() {
  20. global $questions;
  21.  
  22. //Генерирует случайный номер $num, по которому из
  23. //массива берется пара вопрос/ответ.
  24. //Вопрос присваивается переменной $question,
  25. //который далее ставится в форму.
  26. $quest = rand(0, count($questions)-1);
  27. foreach ($questions as $k=>$v){
  28.         if ($num == $quest)
  29.                 {$question = $k;}
  30.         $num++;
  31.         }
  32.  
  33. //форма задавания вопроса
  34. //Вопрос и ответ передаются через $_POST
  35. $a = $question
  36.         <form name=\"question\" method=POST>
  37.         <input type=text name=\"Answer\">
  38.         <input type=hidden name=\"Question\" value=\"$question\">
  39.         <input type=submit value=\"Ответить\">
  40.         </form>";
  41.  
  42. return $a;
  43. }
  44.  
  45. function html_answer($question, $answer){
  46. global $questions;
  47.  
  48. //Ответ сравнивается с вопросом.
  49. if ($questions[$question] == $answer)
  50.         {$a = "Правильно!";}
  51.         else
  52.         {$a = "Неверно!";}
  53.  
  54. return $a;
  55. }
  56.  
  57. ?>
  58.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB