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 :: Вывод картинки и текста на странице
Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
Всем доброго дня, практически только начал изучать PHP. Восзникла небольшая проблема, и никак не получается найти поиском сколь либо полезную информацию...
вопрос собственно вот в чем: как можно 1 скриптом вывести на страницу текст и сгенерированную картинку... пишу разные content-type, но либо картинка не выводится либо текст... ((((
и если вас не затруднит, то напишите плз. пару строк кода, как это делается...
Мелкий
Отправлено: 02 Июня, 2010 - 14:15:13
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
if (isset($_GET['дай_картинку'])) {
//вывод картинки с заголовком картинки
die();
}
//вывод страницы, содержащий ссылку на картинку: <img src="этот_скрипт?дай_картинку">
Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
большое спасибо за ответ! очень здорово, что форум живой, и достаточно быстро может кто-то помочь новичкам с возникающими вопросами.
получается, генерацию для каждой картинки всегда нужно выносить в отдельный скрипт? И чтобы не плодить файлы, вот так в одном скрипте невозможно сделать?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Вызывать всё равно надо отдельным запросом от клиента, а чтобы не плодить файлы - можно передавать гетом скрипту указание, что ему нужно сейчас выводить - саму страницу или картинку.
текст страницы<br><img src="<?PHP echo$_SERVER['PHP_SELF']?>?img1">
----- PostgreSQL DBA
Jerry
Отправлено: 02 Июня, 2010 - 16:09:14
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
ещё раз спасибо, вроде понятно всё стало
JustUserR
Отправлено: 03 Июня, 2010 - 17:52:44
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Jerry пишет:
Получается, генерацию для каждой картинки всегда нужно выносить в отдельный скрипт?
Можно делать и в одном PHP-скрипте с разбивкой по условию для вывода картинки и текста соответственно - а если у вас PHP-скрипт огранизован таким образом что к моменту вывода картинки он уже выводит некоторый текст и это достаточно сложно убрать - то можете использовать буферазицию ob_start с вырезанием лишних выведенных данных
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
qnx
Отправлено: 17 Августа, 2010 - 17:02:45
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2010 Откуда: город-герой Киев
Помог: 0 раз(а)
с открытием скрипта генерации картинки php файлом понятно, но я хочу реализовать генерацию Captcha, точнее реализовал ее, и не знаю как окромя передачи в параметре строки, которую хочу передать это сделать, или возможно как-то вернуть из скрипта, который генерит картинку... если передать гет запросом строку, которую генерирую для отображения она в браузере у пользователя тоже будет видна(
JustUserR
Отправлено: 17 Августа, 2010 - 21:48:18
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
qnx пишет:
Если передать гет запросом строку, которую генерирую для отображения она в браузере у пользователя тоже будет видна
Для передачи уникального сгенерированного значение на капче в проверяющий его PHP-скрипт - можно использовать различные методы и обычно для этой цели используется механизм сессий на серверной сторое В принципе возможно осуществить передачу информации и на клиентской стороне с помощью JS-скрипта и системы шифрования - ведь в таком случае хотя и будет существовать вероятость расшифровки за счет автоматизированного выполнения JS-скрипта на виртуальной машине - но на практике наличие динамических JS-скриптом обеспечивает хорошую защиту
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
qnx
Отправлено: 18 Августа, 2010 - 09:16:19
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2010 Откуда: город-герой Киев
Помог: 0 раз(а)
Я сессиями и думаю передавать, только как передать в сессию правильное значение, которое было указано на картинке? Чтоб пользователь этого не увидел. (на данный момент реализация такова, что строка генерируется в самом скрипте) (Добавление)
index.php
Спасибо большое вроде разобрался, только вот не пойму почему не загружается сама картинка из php файла, генериующего ее.
п.с. если скрепить эти два файла в один и убрать вывод ехом и вардампом картинка нормально генерируется.
JustUserR
Отправлено: 18 Августа, 2010 - 21:24:58
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
qnx пишет:
Если скрепить эти два файла в один и убрать вывод ехом и вардампом картинка нормально генерируется
Судя по приведенными вами PHP-скриптам которые занимаются генерацией и сохранением уникального числа для ввода - а также создания картики для пользовательской стороны - то проблема может заключаться в том что данные PHP-скрипты не имеют общей сессионной информации для взаимодействия - по той причине что в файле pic.php вы не инициализируете текущий сеанс с помощью функций session_start
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
qnx
Отправлено: 19 Августа, 2010 - 09:08:15
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2010 Откуда: город-герой Киев
Помог: 0 раз(а)
JustUserR спасибо огромное. добавил функцию и все заработало.
вот так примерно выглядят мои сгенерированные картинки
JustUserR
Отправлено: 19 Августа, 2010 - 20:02:37
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
qnx пишет:
JustUserR спасибо огромное. добавил функцию и все заработало.
вот так примерно выглядят мои сгенерированные картинки
Пожалуйста! Используемая вами система генераций изображений капчи для последущего их ввода пользователем явлется конечно действенной - однако можно добавить несколько дополнительных элементов на картинки для усложнения их автоматического распознавания - такие как прямые линии в случайном направлении и произвольной длины и другие шумы
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
qnx
Отправлено: 20 Августа, 2010 - 12:31:55
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2010 Откуда: город-герой Киев
Помог: 0 раз(а)
я об этом тоже думал. спасибо большое. капчу просто делал для себя попробовать).
думаю уже как бы сделать расшифровалку, которая бы читала битовую маску картинки, сравнивала с образцом и рисовала буквы)).. но это так, если вдохновлюсь) пока нет шумов такое думаю осуществимо.....
JustUserR
Отправлено: 20 Августа, 2010 - 20:11:27
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
qnx пишет:
Я об этом тоже думал. спасибо большое. капчу просто делал для себя попробовать).
Думаю уже как бы сделать расшифровалку, которая бы читала битовую маску картинки, сравнивала с образцом и рисовала буквы)).. но это так, если вдохновлюсь) пока нет шумов такое думаю осуществимо.....
Пожалуйста! Процесс автоматического считвания значения из капчи является по себе достаточно сложным и в общем случае использует эвристические OCR-методы - однако если форма и расположения текста на капче заранее известны по реализовать автоматическое распознавание значительно проще В частности в вашем случае изображение разбивается на вертикальные области по границам символов - ведь заранее известно что границы элементов по горизонали не перекрываются между собой - хотя и в таком случае определеить выделение и порядок следования символов было бы не так сложно Далее в каждой вертикальной области по контрасту цвета выделяется конкретный образ символа - и происходит его сравнение с эталонным образцом для заданного шрифта В простом случае схема сравнения может быть аналогичная как и для текстовой информации например Хемминговоское расстояние - но конечно для капчей с некоторой вариативностью используются более сложные схемы
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ratz
Отправлено: 23 Июля, 2013 - 15:15:26
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2013
Помог: 0 раз(а)
Можно вот так попробовать, скрипт делает из введенного в поле текста картинку:
<?php
/* -------------------------------- ------- делает из текста картинку -------------- */
if (isset($_POST["send"]))
{
$text= $_POST["text"];
$im = imageCreateTrueColor(300, 100);
$c = ImageColorAllocate($im, 255 , 255, 255);
imageFilledRectangle($im, 0, 0, imageSX($im), imageSY($im), $c); // заливаем все белым цветом
$black = ImageColorAllocate($im, 0 , 0, 0);
$text=iconv("CP1251","UTF-8",$text);
imageTtfText($im, 15, 0, 50, 30, $black, "Tahoma.ttf", $text);
//header("Content-type:image/png");
imagePng($im, "1.png"); // сохраняем изображение
imageDestroy($im);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Добавить текст</title>
</head>
<body>
<form name="myform" action="index.php" method="post">
<div>
<p>Введите текст
<input type="text" name="text" /></p>
<input type="submit" name="send" value="Отправить" />
</div>
<?php
echo "<img src=\"1.png\">"; //выводим изображение
?>
</body>
</html>
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.