Работа с GD2: совмещение content-type html/text и image/png в рамках 1 скрипта.

Sardonix

Новичок
Работа с GD2: совмещение content-type html/text и image/png в рамках 1 скрипта.

Осваиваю генерацию графики в РНР 5 на основе GD2 и сталкиваюсь с такой проблемой - не могу в рамках одного скрипта и сделать вывод ткстовой информации, и сгенерировать картинку: по отдельности - легко, но не вместе. Причина - само собой - Cannot modify header information - headers already sent... Оно и понятно: первоначальный вывод текста установил content-type: text/html, и при попытке переопределить его РНР начинает ругаться.
Не буду голословным - приведу пример:
PHP:
  print "<link rel=stylesheet type=text/css href=tabs.css>";
     include_once("./db_conf.php");
     include_once("./lib/db_lib.php");
  db_connect($db_host, $db_login, $db_pass, $db_name, $db_charset);
  //описываем парамеиры выбоки из БД
  $msg="msg";
      $ip="ip";
         $nick="nick";
  $res=db_query('select * from chat');
  //выводим таблицу
  db_request_tab($res, $ip, $nick, $msg);
  //генерируем картинку
  $pict=ImageCreateTrueColor(200, 100);
  header("content-type: image/png");
  ImagePNG($pict);
  ImageDestroy($pict);
Пожалуйста, объясните, что неправильно.
 

master_x

Pitavale XXI wieku
неправильно то, что нельзя совмещать вывод картинки и html. нельзя совмещать вывод данных разного mime типа вообще. даже не пробуй и не старайся.
 

Shturm

Гигант мысли
Для браузера получение картинки и текста - это два разных запроса.
Так что смысла особого пихать их обработку в один скрипт лично я не вижу,
но если так уж хочется, - то
пускай скрипт принимает параметр, напр. ?img=1.
И тогда, если isset($_GET) -> выводим картинку,
а если нет - генерируем текст.
 

Sardonix

Новичок
Автор оригинала: Shturm
пускай скрипт принимает параметр, напр. ?img=1.
И тогда, если isset($_GET) -> выводим картинку,
а если нет - генерируем текст. [/QUOTE]
Этот вариант не подходит - желательно и то, и другое одновременно.
Может быть, сам подход к решению задачи неверен? Ан хочется-то совсем простой вещи -
регистрационная форма, а под ней - динамически генерируемая картинка со случайным числом, т.е., я хочу сделать стандартную регистрационную фичу. И если одновременнаяя генерация и текста, и изображения в рамках одного скрипта невозможна, то как же это тогда делается? Через генерацию картинки в файл с последующей его вставкой в нужное место текста? :(
 

firex

Новичок
тебе уже подсказал Shturm...
PHP:
if(!empty($_GET['img'])) {
  //генерируем картинку
  $pict=ImageCreateTrueColor(200, 100);
  header("content-type: image/png");
  ImagePNG($pict);
  ImageDestroy($pict); } else {
print "<link rel=stylesheet type=text/css href=tabs.css>";
print "<img src='".$_SERVER['SCRIPT_NAME']."?img=1' />";
     include_once("./db_conf.php");
     include_once("./lib/db_lib.php");
  db_connect($db_host, $db_login, $db_pass, $db_name, $db_charset);
  //описываем парамеиры выбоки из БД
  $msg="msg";
      $ip="ip";
         $nick="nick";
  $res=db_query('select * from chat');
  //выводим таблицу
  db_request_tab($res, $ip, $nick, $msg); }
 

Sardonix

Новичок
Ага, мысль понял.
Код попробовал - кажется, работает.
Спасибо.
 

master_x

Pitavale XXI wieku
firex
Shturm
вы прям чудаки честное слово, еще и в советчики лезете. до вас не доходит, что человек не понимает самые основы функционирования веб-приложений.
 

Shturm

Гигант мысли
master_x
Не думаю, что наши ответы как-то помешают ему это понять;)
 
Сверху