greg52
Новичок
Печать динамической сгенерированной картинки, $_POST и IE
Здравствуйте!
Столкнулся с одной особенностью (привожу контрольный пример):
есть форма:
Есть файл forie.php:
.
Все работает. При отправке формы создается картинка с надписью.
Но теперь когда в Internet Explorer выбираем просмотр картинки, она показывается без надписи. Также она и печатается
без надписи.
А Опере все печать и просмотр нормальные.
Т.е. проблема только в IE.
Пробовал дома PHP Version 5.2.5, apache 2.2.8, Win XP,
а также на хостинге (*nix). Ситуация такая же.
Похожие темы уже обсуждались, но без указания причины:
Проблема с сессиями в новом окне IE,
Проблема печати динамической страницы в IE
Теперь почему так происходит (запросы смотрел HTTP Debugger pro):
когда выбираешь "файл"-"просмотр печати" или "файл"-"печать" IE делает еще один запрос (!!!), не POST:
GET /for_phpclub/forie.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive
соответственно, нет никакго $_POST, и печатается картинка без надписи. Т.е., например,
даст false , хотя при первом выводе было true. Как это красиво обойти?
Здравствуйте!
Столкнулся с одной особенностью (привожу контрольный пример):
есть форма:
PHP:
<html><body>
<form action="forie.php" method="post" target="_blank" >
Введите текст: <input type="text" value="TEST" name="text"> <input type="submit" value="Отправить">
</form>
</body></html>
PHP:
<?php
// Set the content-type
header("Content-type: image/png");
// Create the image
$im = imagecreatetruecolor(400, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$yellow = imagecolorallocate($im, 255, 255, 100);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $yellow);
// The text to draw
$text = $_POST['text'];
// Replace path by your own font path
//echo($text);
$document_root = $_SERVER['DOCUMENT_ROOT'];
$font = $document_root."/arial.ttf";
// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
Все работает. При отправке формы создается картинка с надписью.
Но теперь когда в Internet Explorer выбираем просмотр картинки, она показывается без надписи. Также она и печатается
без надписи.
А Опере все печать и просмотр нормальные.
Т.е. проблема только в IE.
Пробовал дома PHP Version 5.2.5, apache 2.2.8, Win XP,
а также на хостинге (*nix). Ситуация такая же.
Похожие темы уже обсуждались, но без указания причины:
Проблема с сессиями в новом окне IE,
Проблема печати динамической страницы в IE
Теперь почему так происходит (запросы смотрел HTTP Debugger pro):
когда выбираешь "файл"-"просмотр печати" или "файл"-"печать" IE делает еще один запрос (!!!), не POST:
GET /for_phpclub/forie.php HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive
соответственно, нет никакго $_POST, и печатается картинка без надписи. Т.е., например,
PHP:
isset($_POST['text'])

