Forum Webscript.Ru

Программирование => Perl => Тема начата: AlexZ от 18 Сентября 2007, 15:26:35

Название: Отображение страницы в альтернативных браузерах
Отправлено: AlexZ от 18 Сентября 2007, 15:26:35
До сего дня не имел ни грамма опыта программирования на Perl, мал-мала пописывая на PHP. Но тут меня поставили перед задачей, решить которую просто необходимо.

Есть некоторый сайт, кусок исходного кода которого привожу ниже. И если в IE конечная информация выводится, как надо, то в альтернативных браузерах, таких, как Opera или FireFox, выводится просто исходный код HTML\'я.


#!c:/perl/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use lib "mods";
use CGI;
use Mysql;
use sys_Connect_DB;
use sys_Template;
use sys_rcCatalog;
use sys_rcNews;
use sys_rcNews_eng;

my $adm_script = "adm-cp.cgi";
my $adm_css    = "config.css";
my $img_path   = "/img/";
my $uploads    = "uploads/";
my $uploadsurl = "/uploads/";
my $template   = "inc";
my %params;
my $title = "test";

print "content-type: text/html\\n\\n";
my $cgi = new CGI;
my @names = $cgi->param;
foreach my $line (@names) {
  my $val = $cgi->param($line);
  $params{$line} = $val;
}

my $html;
if ($params{page} eq "") {
  my $where = "where sign=6";
  $html = &sys_Template::sys_Template_HTML("$template/sub.htm", {
                                                   list   => &sys_rcCatalog::get_Catalog_list(1, "/product/;$uploadsurl;$uploads", 0, \'\', \'width=100% align=right\', \'nopath\'),
                                                   body   => &sys_rcNews::get_news(\'width=100% align=right\', \'\', $where),
                                                   search => &sys_rcCatalog::get_Search_Form(1, "/product/;$uploadsurl;$uploads", $params{cid}, $params{at}, \'width=100% align=right\', \'nolink\'),
                                                   title  => $title

                                           });
}
print $html;


Т.е. исходный текст страницы передается в переменную $html. При печати этой переменной движок IE интерпретирует хтмл код правильно, а вот Опера, к примеру, видит это, только как обычный текст, соответственно выдавая его на экран.
Название: Отображение страницы в альтернативных браузерах
Отправлено: arto от 18 Сентября 2007, 21:33:01
запустите и посмотрите, что скрипт выдает в stdout
Название: Отображение страницы в альтернативных браузерах
Отправлено: AlexZ от 19 Сентября 2007, 08:39:33
Хм... Может быть, я не так понял... Но ведь stdout для print\'а используется по умолчанию, выводя значение $html на экран?
Название: Отображение страницы в альтернативных браузерах
Отправлено: AlexZ от 19 Сентября 2007, 12:25:18
Проблема решена.

Вместо print $html;  поставил print qq{Content-Type: text/html\\n\\n $html};

Спасибо Arto за отзывчивость :)
Название: Отображение страницы в альтернативных браузерах
Отправлено: arto от 19 Сентября 2007, 19:03:13
если уже есть CGI.pm, то проще print $cgi->header ()