cookieについて

[上に] [前に] [次に]
yasufumi [E-Mail] [HomePage] 1997/09/14(日) 23:51:07
cookieを使ってチャットでのネームを保存して、
次回から入力しなくても名前を表示できるように
したいんですが、わかりません。ソースをおしえてください。

YMK [HomePage] 1997/09/17(水) 02:55:51
長い 汚い(T-T)
あくまでも基本的なアルゴリズムのみで。
入室 -> チャット という2段階のタイプだけど、
いくらでも応用は利くはずです。
テストしてないから動作保証はしないけど…(無責任(T-T))

#
#chat post frame.cgi
#
&getCookie;

print <<EOF;
Content-type: text/html\n\n

チャットルームへの入室<BR><BR>
<FORM METHOD="post" ACTION="./chat.cgi">
ハンドルネーム:<INPUT TYPE="TEXT" NAME="pName" SIZE=16 VALUE="$pCOOKIE{'MY_CHAT_NAME'}"><BR>
<INPUT TYPE="SUBMIT" VALUE="入室">
</FORM>
</BODY></HTML>
EOF

exit 0;

#Cookieの取得
sub getCookie {
if( $ENV{'HTTP_COOKIE'} ) {
foreach (split(';',$ENV{'HTTP_COOKIE'})){
($name,$value)=split('=');
$value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("c",hex($1))/eg;
$pCOOKIE{$name}=$value;
}
}
}

==================================================================================
#
#chat.cgi
#

&myInit;
&getCookie;

if( $param{'pName'} ) { print "Content-type: text/html\n\n名前いれてくれ\n"; exit 0 }

#内容が更新された時のみCookie送信
if( $param{'pName'} ne $pCOOKIE{'MY_CHAT_NAME'} ) {
print "Set-Cookie: ";
print "MY_CHAT_NAME=$param{'pName'};";
print "expires=Sat. 1-Jan-2000 00:00:00 GMT\n";
}

print <<EOF;
Content-type: text/html\n\n

チャットルーム<BR><BR>
<FORM METHOD="post" ACTION="./chatpost.cgi">
ハンドルネーム:$param{'pName'}
<TEXTAREA COLS=30 ROWS=4 NAME="pMsg"></TEXTAREA><BR>
<INPUT TYPE="SUBMIT" VALUE="発言">
</FORM>
</BODY></HTML>
EOF

exit 0;

#Cookieの取得
sub getCookie { 同じ 省略 }

sub myInit {
if( $ENV{'REQUEST_METHOD'} eq 'GET' ) {
$query_string = $ENV{'QUERY_STRING'};
} else {
read( STDIN, $query_string, $ENV{'CONTENT_LENGTH'} );
}

foreach (split('&',$query_string)){
($variable,$value)=split('=');
$value=~ tr/+/ /;
$value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("c",hex($1))/eg;
&jcode'convert(*value,'euc');
$value=~ s/</&lt;/g;
$value=~ s/>/&gt;/g;
$value=~ s/\015\012/\012/g;
$value=~ s/\015/\012/g;
$param{$variable}=$value;
}
}

やまっち@M&Tcom. [E-Mail] [HomePage] 1997/09/21(日) 04:22:18
cookieのスクリプトを一から書くのが基本かもしれませんが、
「MATT SCRIPT ARCHIVE」に“cookie.lib”というのがあります。

これを使うと、cookieの送出・受け取りが、それぞれたったの1行で
出来てしまいます。素人の味方みたいなライブラリです。

[上に] [前に] [次に]