Автор Тема: Как в библиотеке CGI header отправить в Win1251 код.???  (Прочитано 4856 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
............................
$the_cookie = cookie(-name=>\'login\',
                     -value=>$login,
                     -expires=>\'+1m\');

print header(-cookie=>$the_cookie);          #<<<<< надо WIN1251

print "\\n\\nCookie\\n";
print "\\n";
print "\\n";
....................................
и т.д.

Забыл пояснить, cookie пишутся нормально, а вот страница выводится в Latin кодировке, без cookie пользовался так, и всё было нормально

print "Content-type: text/html; charset=windows-1251\\n\\n";

Заранее спасибо.
« Последнее редактирование: 07 Сентября 2002, 13:20:17 от Yuraz »

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #1 : 07 Сентября 2002, 13:34:54 »
А ты зделай так: сначала дай
print "Content-type: text/html; charset=windows-1251\\n;,
а потом с помощю CGI залей куки. Мне кажеться, что cейчас на выходе получается такое:


Set-cookie: ...

Content-type: text/html

Body

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #2 : 07 Сентября 2002, 13:59:05 »
Не, так не идет, я и раньше так пробовал, скрипт выдает кроме контента еще и эту строку, в начале. Т.е. логично, 2х заголовков быть не может. В CGI документации делал поиск по "ENCODING", может быть плохо искал, ничего не нашёл..

Date: Sat, 07 Sep 2002 09:54:06 GMT Content-Type: text/html; charset=ISO-8859-1

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #3 : 07 Сентября 2002, 22:53:14 »
print header(-status=>\'200 OK\',
                        -charset=>\'koi8-r\');
или:

print header(-cookie=>[$CookieA, $CookieB],
                         -charset=>\'koi8-r\');
Debian/GNU Linux is rulezz...

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #4 : 07 Сентября 2002, 22:57:38 »
Это cgi.
А вот как делаю я:

         $addCookieA= cookie(-name    =>   "$sysvar{\'cookie_username\'}",
            -value   =>   "$Posted_Data{\'options_username\'}",
            -path    =>   "/",
            -expires =>   \'+1d\');
         $addCookieB = cookie(-name    =>   "$sysvar{\'cookie_password\'}",
            -value   =>   "$Posted_Data{\'options_userpassword\'}",
            -path    =>   "/",
            -expires =>   \'+1d\');
      print "Status: 200 OK\\n";
      print "Set-Cookie: $addCookieB\\n";
      print "Set-Cookie: $addCookieA\\n";
   print "Content-type: text/html;charset=$locale{\'tcp_encoding\'}\\n\\n";

Не люблю я все эти шмодули....
конечно, тут не без них, но всё-же какой-то контроль.
Впринципе, можешь зайти телнетом на скрипт и посмотреть, что он тебе будет говорить при использовании CGI.
Debian/GNU Linux is rulezz...

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #5 : 08 Сентября 2002, 00:50:28 »
Цитировать
2х заголовков быть не может
... Не ищи проблем где их нету - делай вручную как SteelRat, и все будет ОК!
PS. Я даже
Цитировать
$addCookieA= cookie(-name => "$sysvar{\'cookie_username\'}",
-value => "$Posted_Data{\'options_username\'}",
-path => "/",
-expires => \'+1d\');
делал бы вручную...

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #6 : 09 Сентября 2002, 17:19:06 »
SteelRat ! Спасибо! Ставить я из научился, но вот ...

Очень срочный вопрос Вам, но может и ещё кто ответит, очень проблема эта зободала,

Как мне послать заголовок(с куками/или без них), если такой пользователь уже есть в системе?

Т.е. по порядку, например входит на сайт Вася, регистрируется под Vasia, всё ок, в базе он есть, входит ещё один Вася, также регистрируется под Vasia, база у меня отслеживает, что есть один такой, записать - не записать в неё я могу, а я вот ничего сделать не могу с куками, чтобы у второго Васи не прописывать эти куки, а как то его завернуть на новую регистрацию.

начало скрипта такое:

$newlogin=$FORM{\'login\'};
$newpass=$FORM{\'pass\'};
$newemail=$FORM{\'email\'};

$login = cookie(\'login\');
$pass = cookie(\'pass\');
$email = cookie(\'email\');

if($step eq "login"){
         $login=$newlogin;
         $pass=$newpass;
         $email=$newemail;}
elsif($step eq "logout"){
         $login=\'\';
         $pass=\'\';
         $email=\'\';}

$the_cookie1 = cookie(-name=>\'login\',
                     -value=>$login,
                     -expires=>\'+1M\');
$the_cookie2 = cookie(-name=>\'pass\',
                     -value=>$pass,
                     -expires=>\'+1M\');
$the_cookie3 = cookie(-name=>\'email\',
                     -value=>$email,
                     -expires=>\'+1M\');

print header(-cookie=>[$the_cookie1,$the_cookie2,$the_cookie3],
                       -charset=>\'win1251\');


в заголовке всегда ставится cookie, а как тогда послать обычный заголовок или с куками, предварительно определив, есть/нет такого юзера.

Я делал сравнение ранее (^единственного^) заголовка, но тогда выдаётся 500 ошибка, и апачь в логах пишет типа этого


[Mon Sep 09 16:33:32 2002] [error] [client 127.0.0.4] malformed header from script. Bad header=: c:/www/allcars/cgi-bin/main.pl

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #7 : 09 Сентября 2002, 18:39:05 »
Может в принципе всё не так надо делать с куками? Тогда посоветуйте, плиз, для разбора несложный скрипт гостевой или форума, с куками, где можно удалить, поставить, проверить, есть ли уже такой юзер...

Заранее спасибо.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #8 : 10 Сентября 2002, 00:45:52 »
проверь, есть ли такой юзверь и если есть, то скажи, что нужен другой логин. В чём проблема?
Debian/GNU Linux is rulezz...

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #9 : 10 Сентября 2002, 08:25:27 »
Цитировать
проверь, есть ли такой юзверь и если есть, то скажи, что нужен другой логин. В чём проблема?

Так проверяю, и отслеживаю, и сказать могу что есть уже такой, но cookie как не устанавливать в таком случае?


Хорошо, реально ли так сделать структуру скрипта:

$step=$FORM{\'step\'};


if($step eq "1")
{
print header(-cookie=>[$yyCookie, $yySetCookie],
                        -charset=>\'koi8-r\');        
далее скрипт
******************************
}


elsif($step eq "2")
{
print header(-status=>\'200 OK\',
                        -charset=>\'koi8-r\');        
далее скрипт
******************************
}


elsif($step eq "3")
{
print header(-status=>\'200 OK\',
                        -charset=>\'koi8-r\');        
далее скрипт
******************************
}

у меня так 500 ош, ругалась на непрвильный заголовок, гдето ^^^^^ выше писал.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Как в библиотеке CGI header отправить в Win1251 код.???
« Ответ #10 : 10 Сентября 2002, 16:29:20 »
open (userlist, list.txt)
@userlist = ;
close(userlist);
undef $userexist;
chomp @userlist;
   for(my $i = 0; $i < @userlist; $i++) {
      $curline = $userlist[$i];
                 if ($curline eq $login) {$userexist = \'OK\'}
   }
if ($userexist ) {
print "Content-type: text/html\\n\\n";
print \'такой пользователь уже есть\';}
else {
 $addCookieA= cookie(-name => "SITElogin",
-value => "$login",
-path => "/",
-expires => \'+1d\');
$addCookieB = cookie(-name => "SITEpassword",
-value => "$password",
-path => "/",
-expires => \'+1d\');
print "Status: 200 OK\\n";
print "Set-Cookie: $addCookieB\\n";
print "Set-Cookie: $addCookieA\\n";
print "Content-type: text/html;charset=windows-1251\\n\\n";
}
Debian/GNU Linux is rulezz...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28