- ベストアンサー
ログファイルからデータ呼び出し。
ログファイル(例えば1.logという名前とします)の中身を呼び出し、それを現在表示されているcgiのフォーム内に 表示させるにはどのようにしたらいいのでしょうか? たとえば、クッキーみたいに <input type=text name=021118 value=***></input> とすればできるのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その記述だとPOST送信されてきたデータを受け取る処理しか書いてません。 >read(STDIN,$buffer,$ENV{'content_length'}); これはPOST送信のデータを取得していますので関係ないです。 ログデータですのでログを開いて中のデータを取得して下さい。 open FILE,"<access.log"; flock(FILE,2); $log_data=<FILE>; flock(FILE,8); close FILE; @atai = split(/&/,$log_data); foreach $atais(@atai){ ($key, $value) = split(/=/, $atais); $FORM{$key}=$value; }
その他の回答 (2)
- wolfwood
- ベストアンサー率50% (199/398)
>たとえば、クッキーみたいに ><input type=text name=021118 value=***></input> >とすればできるのでしょうか? クッキーでもそのような記述だけで取得できないと思いますが・・・。 つまりログ内のデータにパラメータ名とデータが"="で対になっているものを&で繋げて保存しているのですね。 split関数を使ってキーワードで分割すれば良いです。 GETやPOSTでの送信時のパラメータの受取りやCookieのデータ取得と同じです。 あとは普通の掲示板の保存・取得の仕組みとかですね。 @分割された配列 = split /&/,$分割する文字列; foreach $p_data (@分割された配列){ ($name,$data) = split /=/,$p_data; $PARA{"$name"} = $data; } これで$PARA{"パラメータ名"}で取得できます。
お礼
回答ありがとうございます。 hyouji.cgi このファイルで実際のログファイルを表示させる。 access.cgi このファイルを使用して、hyouji.cgiのデータをlogファイルに書き込む(上書き)。 access.log ログファイルの書き込み用ファイル。 hyouji.cgi → access.cgi → access.log というような流れになっています。 上の手順だけですと、okなのですが、access.logファイル内にかかれたデータを、 もう一度hyouji.cgiにアクセスしたら、表示させたいのです。 よくわからなかったのですが、手探りで以下のようにしてみました。 hyouji.cgi read(STDIN,$buffer,$ENV{'content_length'}); @atai = split(/&/,$buffer); foreach $atais(@atai){ ($key, $value) = split(/=/, $atais); $FORM{$key}=$value; } print "<TD CLASS=BB><INPUT TYPE=TEXT NAME=021101 SIZE=1 CLASS=TEXT VALUE=$FORM{'021101'}></INPUT></TD>\n"; としてみましたが、何も表示されませんでした。($form{'021101'}という文字も。) access.cgi内では read(STDIN,$buffer,$ENV{'content_length'}); @atai = split(/&/,$buffer); foreach $atais(@atai){ ($key, $value) = split(/=/, $atais); $FORM{$key}=$value; } としています。 よろしくお願いします。
- estea
- ベストアンサー率44% (39/87)
HTML の話でしょうか・・・ であれば <textarea name=021118>*****</textarea> のほうがよいとは思いますが。 log 自体の読み込みは open とか使えばいけますよね。って そういう意味ではない? どのレベルの話なんでしょうか・・・
お礼
回答ありがとうございます。 ログファイルにcgiを使って書き込みをして、openで開けますよね? 私はその中身をベタで表示(そのまま何の加工もせずに表示)しかしたことがないのですが、 021118=14&021119=15 というような中身だった場合、それをフォーム上で表示させる時に、 021118のデータは「14」、021119のデータは「15」と認識させたいのです。 これはどうしたらいいでしょうか?
お礼
回答ありがとうございます。 無事できました。 今までログファイルの中身を読み込む、ということをしたことがなかったので、まったくわかりませんでした。 ありがとうございました。