Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > header Content-type


Автор: rthsobakas 16.1.2009, 15:13
Код

function qwer()
{
echo "........";
//пробуем создать капчу из картинки с каким-нибудь «шумным» фоном:
if (!$image = @imagecreatefromgif('../img/cod.gif'))
{    
//если не было создано изображение на основе image.gif, мы создаем новую картинку размером 88 на 31 пикселей
$image = imagecreatetruecolor(88, 31);
//определяем цвет фона:
$backgroundcolor = imagecolorallocate($image, 255, 255, 255);
//заливаем полученное изображение выбранным цветом:
imagefill($image, 0, 0, $backgroundcolor);
}
//определяем цвет шрифта:
$fontcolor = imagecolorallocate($image, 0, 0, 0);
//создаем случайное четырехзначное число:
$text = mt_rand(1000, 9999);
//выводим число на картинку:
imagestring($image, 5, 0, 0, $text, $fontcolor);
//и выдаем полученный результат пользователю:
imagegif($image);
header('Content-type: image/gif');
echo "......";
return;
}


вот есть код.
Если написать echo "header('Content-type: image/gif')";
то выведится код картинки(ну ГИФ как текстовый)...
Если так header('Content-type: image/gif'), то весь контент не загрузится, тока покажется картинка(элемент) , вкоторый сама картинка не сгенирируется... Що делать?

Автор: lelik133 16.1.2009, 15:23
а почему у тебя header('Content-type: image/gif'); стоит после непосредственного вывода в браузер imagegif($image); ?
да и еще до вызова header не должно быть никакого вывода в браузер, echo и прочего..

Автор: rthsobakas 16.1.2009, 15:31
Цитата

а почему у тебя header('Content-type: image/gif'); стоит после непосредственного вывода в браузер imagegif($image); ?
да и еще до вызова header не должно быть никакого вывода в браузер, echo и прочего..

если я хидер первым поставлю до вывода всего...
то есть н-р
Код

header('Content-type: image/gif');
echo "
<?xml version='1.0' encoding='CP-1251'?>
<!DOCTYPE html 
  PUBLIC '-//W3C//DTD XHTML 1.1//EN'
  'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
  <title> Программирование, администрирование и т.д. | sobakas.ru </title>
<link rel='stylesheet' type='text/css'  href='../css/view.css'>
<link rel='stylesheet' type='text/css'  href='../css/view2.css'>
</head><body>
<center>";


то контент не загрузится просто

Добавлено через 7 минут и 52 секунды
если хидер убрать то получится что то такое

Код

GIF87a)гЅТзАФиБФйЕЧйЙЩлЦбраочьчМпцыяяя,)рИI«©8`Шyџ(Ѓy()ЎјЙІД¶dЄRєVІО@Ыw?rw#љ—Јt’LјR6t(ээЦвMЎРљoУлњр>u:JQ@»%м¶СL&Пэ*g}Ђ\G2†VЏO$Ђ}r”.…‘Y•} ў љўuќx‘V•ҐdІ°Ј®«¬®ЇҐІјҐ‚®¬№Љ™јІМ©ќВ ;

Автор: skyboy 16.1.2009, 15:43
не, ты не прав.
скрипт может либо отдавать только картинку(заголовок Content-Type: image/gif  и сами бинарные данные - содержимое картинки), либо HTML-разметку(Content-Type: text/html и собственно, HTML-код). Выдавать и то, и то за один присест теоретически можно(см. http://ru.wikipedia.org/wiki/Data:_URL), но имеет собственные ограничения по объему(ограничение на длину определяется ограничением на длину URL - 2, 4 или 8 Кб, не более) и поддерживается не всеми браузерами. Так что решением является разделение генерации картинки и HTML-кода.

Автор: rthsobakas 16.1.2009, 15:51
skyboy, 

Код

function qwer()
{
echo "........";
//  а здесь должна быть картинка
echo "......";
return;
}


Генерация картинки в отдельном фаили пхп (pic.php)
Код

<?php
//пробуем создать капчу из картинки с каким-нибудь «шумным» фоном:
if (!$image = @imagecreatefromgif('../img/cod.gif'))
{    
//если не было создано изображение на основе image.gif, мы создаем новую картинку размером 88 на 31 пикселей
$image = imagecreatetruecolor(88, 31);
//определяем цвет фона:
$backgroundcolor = imagecolorallocate($image, 255, 255, 255);
//заливаем полученное изображение выбранным цветом:
imagefill($image, 0, 0, $backgroundcolor);
}
//определяем цвет шрифта:
$fontcolor = imagecolorallocate($image, 0, 0, 0);
//создаем случайное четырехзначное число:
$text = mt_rand(1000, 9999);
//выводим число на картинку:
imagestring($image, 5, 0, 0, $text, $fontcolor);
//и выдаем полученный результат пользователю:
header("Content-type: image/gif");
imagegif($image);
?>


Как из этого места стартануть скрипт пик.пхп 
Код

//  а здесь должна быть картинка

и чтобы картинка грузанулась и контент дальше грузился?

Автор: theworldcreator 16.1.2009, 15:57
Код

<img src='pic.php'>

Автор: bars80080 16.1.2009, 15:58
попробую перефразировать skyboy, 

у тебя картинка в браузере имеет строго определённую разметку: <img src="pic.php" />

эта разметка в самой странице script.php, а генерация картинки находится в отдельном файле pic.php, в котором есть всего один header("Content-type: image/gif"); и один вывод imagegif($image); и никаких больше echo, print и ещё чего-нибудь

Автор: rthsobakas 16.1.2009, 16:01
theworldcreator, 
Код

<img src='pic.php'>

интересно... что так делать можно я не знал... спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)