Forum Webscript.Ru
Программирование => Perl => Тема начата: Yuraz от 07 Сентября 2002, 13:07:10
-
............................
$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";
Заранее спасибо.
-
А ты зделай так: сначала дай
print "Content-type: text/html; charset=windows-1251\\n;,
а потом с помощю CGI залей куки. Мне кажеться, что cейчас на выходе получается такое:
Set-cookie: ...
Content-type: text/html
Body
-
Не, так не идет, я и раньше так пробовал, скрипт выдает кроме контента еще и эту строку, в начале. Т.е. логично, 2х заголовков быть не может. В CGI документации делал поиск по "ENCODING", может быть плохо искал, ничего не нашёл..
Date: Sat, 07 Sep 2002 09:54:06 GMT Content-Type: text/html; charset=ISO-8859-1
-
print header(-status=>\'200 OK\',
-charset=>\'koi8-r\');
или:
print header(-cookie=>[$CookieA, $CookieB],
-charset=>\'koi8-r\');
-
Это 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.
-
2х заголовков быть не может
... Не ищи проблем где их нету - делай вручную как SteelRat, и все будет ОК!
PS. Я даже $addCookieA= cookie(-name => "$sysvar{\'cookie_username\'}",
-value => "$Posted_Data{\'options_username\'}",
-path => "/",
-expires => \'+1d\');
делал бы вручную...
-
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
-
Может в принципе всё не так надо делать с куками? Тогда посоветуйте, плиз, для разбора несложный скрипт гостевой или форума, с куками, где можно удалить, поставить, проверить, есть ли уже такой юзер...
Заранее спасибо.
-
проверь, есть ли такой юзверь и если есть, то скажи, что нужен другой логин. В чём проблема?
-
проверь, есть ли такой юзверь и если есть, то скажи, что нужен другой логин. В чём проблема?
Так проверяю, и отслеживаю, и сказать могу что есть уже такой, но 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 ош, ругалась на непрвильный заголовок, гдето ^^^^^ выше писал.
-
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";
}