Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> perl скрипт и опера, не отображается как html страница 
V
    Опции темы
zorch
  Дата 13.7.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Доброго времени суток.
У меня такая проблема. Есть функция, которая читает шаблон страницы (html-файл)  в массив
Код

sub readFile
{
        ($name1) = @_;
        $str = "";
        my $buffer = "";

        if (open FIL, $name1)
        {
                while (read(FIL, $buffer, 1024))
                {
                        $str .= $buffer;
                }

                close FIL;
        }

        return $str;
}

Далее я провожу с этим массивом нужные преобразования (что нужно заменяю, вставляю и т.д.) и вывожу.
кратко это выглядит так:
Код

print "Content-type: text/html\n\n";
$template = "view_detail.shtml";
$HTML = readFile($template);
# далее преобразования $HTML
print $HTML;

В IE все работает на ура! А в других броузерах (Opera, Mozilla) отображается исходник html страницы.
Вчера случайно попробовал открыть страницу в  Konqueror (Desktop BSD), он мне сказал что получит в результате текст и спросил куда его сохранить! 
Где грабли? Бьюсь уже давно, ни чего не получается smile   
PM MAIL   Вверх
nitr
Дата 13.7.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Да, такое ещё не видел... А перед строкой 1 можешь код показать? Потому что раз в обном браузере всё сработало, значит Апач или другой сервер настроен на перловыйЦГИ.
а попробуй самый простой пример:
Код

#!perl -w
use strict;

print "Content-Type: text/html;charset=windows-1251\n\n";
print '<html><body><h1>Работает ;)</h1></body></html>';
 


--------------------
PM   Вверх
rcdimon
Дата 13.7.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



да...... уж  smile 
Код


use CGI qw(:standard);
print header( -charset => 'Windows-1251');
 
PM MAIL ICQ   Вверх
nitr
Дата 13.7.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



rcdimon, вопрос глянь... ;)
Он без модуля использует перлЦГИ 


--------------------
PM   Вверх
rcdimon
Дата 13.7.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



а при чем тут вообще опера? всю жизнь пишу веб программы и пользуюсь только оперой... никаких проблем

Добавлено @ 17:16 
пусть просто заголовок нормальный выводит... а вообще нечего изобретать велосипед. надо юзать модуль цги. 
PM MAIL ICQ   Вверх
nitr
Дата 13.7.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



ну по поводу "велосипеда" это вопрос... недавно один диплом читал, там хорошее сранение было позагрузке этих модулей, что быстрей и как. Я понимаю спец писал, но имхо что-то лучше уже могут написать... 


--------------------
PM   Вверх
djkostya
Дата 14.7.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Цитата(rcdimon @ 13.7.2006,  17:15)
а при чем тут вообще опера? всю жизнь пишу веб программы и пользуюсь только оперой... никаких проблем

Добавлено @ 17:16 
пусть просто заголовок нормальный выводит... а вообще нечего изобретать велосипед. надо юзать модуль цги.


Да там просто если Опера и заголовок не передать то он её выводит как txt хотя в IE он выводиться как HTML

Да там просто если Опера и заголовок не передать то он её выводит как txt хотя в IE он выводиться как HTML
 
PM MAIL WWW ICQ   Вверх
zorch
Дата 14.7.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Самое интересное что просты вещи он выводит, т.е. если я выводу просто страницу (которую предвориельно читаю из файла) то он все выводит... возможно у меня где то косяк в коде. Сейчас буду все проверять, отпишусь! 
PM MAIL   Вверх
zorch
Дата 16.7.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Значит ситуация следующая! Я разобрался из-за чего он не работает, но не знаю как это исправить!
Алгоритм такой: 
- Пользователь вводит логин и пароль
- Скрипт его проверяет
- Если логин правильный ставит куку и выводит соответствующую страницу.
Кусок кода последнего пункта выглядит след. образом:
Код

    &cook;
    &index;

sub cook   #Устанавливаем куку
{
#получаем переменные $flogin и $hash 
#(там все просто, но большой кусок, данные берутся выборкой из БД и генерацией случайных чисел)
                 print "Set-Cookie: $flogin=$hash;\n\n";
}

sub index    
   {   
      print "Content-Type: text/html;charset=windows-1251\n\n";    
      print '<html><body><p>;-)</p></body></html>';
}


Это упрощенный вариант, но зато надеюсь понятный. Тут при выводе смайла, он выводится в виде простого текста, и броузеры отличные от IE выводят просто код! Что можно с этим сделать?
 
PM MAIL   Вверх
korob2001
Дата 16.7.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

print "Set-Cookie: $flogin=$hash;\n\n";

Попробуй вот здесь убрать один симовл перевода строки \n, т.е. должно получиться следующее:
Код

print "Set-Cookie: $flogin=$hash;\n";

Причина в том, что ты закончил заголовок при передаче кук, затем ты вызываешь подпрограмму &index, где ты пытаешься передать ещё один заголовок Content-type, но ты его передаёшь уже на как заголовок, а как тело документа. IE такие ошибки пытается исправить, но с оперой, NN такие номера не пройдут. 

Это сообщение отредактировал(а) korob2001 - 16.7.2006, 14:17


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
zorch
  Дата 16.7.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.3.2006

Репутация: нет
Всего: нет



Огромное спасибо!
Все заработало! smile  smile  smile  smile  smile  smile 
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.