質問者 まだまだ初心者
投稿日 6/25(火) 22:23:32
登録画面でユーザーさんに記入して頂いたidやpasswordをクッキーに読み込ませ、
次のページで表示しようとしたら、表示されません。そこで、IE5.1MACの
「編集」→「初期設定」→「COOKIES」でクッキーの中身を表示させたら、idやpasswordは
記憶されていません。
これだけならいいのですが、たまたま、2番目のページ(クッキーを読み込むページ)を
更新したら、今度は読み込まれているのです。
一体、何がいけなくて何が良いのでしょうか?どなたか教えて頂けませんか。
以下、スクリプトです。流れ的には最初のページでformに記入してもらったidとpasswordを
次のページでクッキーに記憶し、さらに、すぐに読み出して、ページの表示に使おうとしています。
#!/usr/bin/perl
require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse(*form);
&jcode'convert(*form,'sjis');
$data = "$form{'id'}<>$form{'pass'}<>$form{'name'}<>$form{'email'}<>$form{'sex'}<>$form{'age'}<>$quiz_0<>$quiz_1<>$quiz_2<>$quiz_3<>$quiz_4<>$quiz_5<>\n";
open(IN,"+>./player/$form{'id'}.dat") || die "ファイルを開けませんでした。";
flock(IN, 2);
print IN $data;
flock(IN, 8);
close(IN);
local($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+30*24*60*60);
@month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec);
$cook = "id<>$form{'id'},pass<>$form{'pass'}";
print "Set-Cookie: PID = $cook; expires = $gmt\n";
@pairs = split(/;/, $ENV{'HTTP_COOKIE'});
foreach (@pairs) {
local($key,$val) = split(/=/);
$key =~ s/\s//g;
$GET{$key} = $val;
}
@pairs = split(/,/, $GET{'PID'});
foreach (@pairs) {
local($key,$val) = split(/<>/);
$COOK{$key} = $val;
}
$c_id = $COOK{'id'};
$c_pass = $COOK{'pass'};
# -----ここから出力 -----
print "Content-type: text/html\n\n";
<以下省略>
プロバイダ参照:http://www.interlink.co.jp
サーバのOS:UNIXサーバ
パソコンのOS:Mac9
エディタ:MAC J PERL
FTPソフト:FETCH V.3
サーバ移転:していない
改造:していない
CGI習熟度:middle
|