Forum Webscript.Ru

Программирование => PHP => Тема начата: AlieN от 02 Марта 2004, 20:12:57

Название: Вывод зипованной страницы
Отправлено: AlieN от 02 Марта 2004, 20:12:57
Итак, что мы имеем:
 в начале скрипта
ob_start();
в конце скрипта:
$data=ob_get_contents();
ob_end_clean();
echo gzipoutput($data,1,1);
Сама функция сжатия(почти без исправлений взята с vBulletin):

function gzipoutput($text,$level=1,$test=false){
global $HTTP_ACCEPT_ENCODING,$nozip;

$returntext=$text;

if (function_exists("crc32") and function_exists("gzcompress") and !$nozip){
if (strpos(" ".$HTTP_ACCEPT_ENCODING,"x-gzip")) {
$encoding = "x-gzip";
}
if (strpos(" ".$HTTP_ACCEPT_ENCODING,"gzip")) {
$encoding = "gzip";
}
  if ($encoding) {
     header("Content-Encoding: $encoding");
     header("Content-Type: text-html\\n\\n");
     if($test)
  {
$replace="Äî ñæàòèÿ-".strlen($text).";Ïîñëå ñæàòèÿ-".strlen(gzcompress($text,$level));
$text=str_replace("","$replace",$text);
}
     $size = strlen($text);
     $crc = crc32($text);
     $returntext = "\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00";
     $returntext .= substr(gzcompress($text,$level),0,-4);
     $returntext .= pack("V",$crc);
     $returntext .= pack("V",$size);
 @header("Content-Length: ".strlen($returntext));  
 }
  }else{
echo "HUY";exit();
}
 return $returntext;
}

Суть траблы:
Mozilla Firebird прекрасно всё понимает, текст зипуется и т.д. и т.п.
А вот IE5x, 6sp1 предлагает сохранить файл, что естественно нельзя, как с этим бороться? :)
Название: Вывод зипованной страницы
Отправлено: Меняздесьдавнонет от 02 Марта 2004, 20:46:13
может быть, посмотреть, чем отличаются заголовки, которые получает браузер от твоего скрипта, и от сервера, с которого показывает нормально?
Название: Вывод зипованной страницы
Отправлено: AliMamed от 03 Марта 2004, 00:08:42
а чо ob_gzhandler ?
Название: Вывод зипованной страницы
Отправлено: Макс от 03 Марта 2004, 00:18:30
а варианты с использованием mod_gzip / mod_deflate не подходят ?
Название: Вывод зипованной страницы
Отправлено: AlieN от 03 Марта 2004, 16:33:21
RomikChef
Знать бы как :)
Собственно решил проблему, убрал
header("Content-Type: text-html\\n\\n");
Макс
Не подходят, надо учитывать "антинастраиваемость" некоторых сайтов ввиду их бесплатного хосторазмещения
Название: Вывод зипованной страницы
Отправлено: Меняздесьдавнонет от 03 Марта 2004, 16:36:26
Цитировать
AlieN:
Знать бы как

ты не знаешь, как посмотреть НТТР заголовки?
Есть море специальных программ.
часть перечислена в http://faq.phpclub.net/na_tanke
часть можно в любом поисковике найти по запросу HTTP ssniffer
Название: Вывод зипованной страницы
Отправлено: AlieN от 03 Марта 2004, 16:40:56
RomikChef
Ради интереса, расскажи мне какие заголовки дает эта страница
(http://forums.webscript.ru/showthread.php?s=&threadid=16048)
Название: Вывод зипованной страницы
Отправлено: Yukko от 03 Марта 2004, 16:55:16
Цитировать
AlieN:
Ради интереса, расскажи мне какие заголовки дает эта страница

http://www.superweb.nl/yukko/headers.txt
Устраивает?
Название: Вывод зипованной страницы
Отправлено: AlieN от 03 Марта 2004, 17:01:13
Yukko
Цитировать
Content-Type: text/css; charset=windows-1251

Красота прямо :)
[off]Там кстати данные всех твои кук, так и пароль потерять можно[/off]