• ベストアンサー

ログファイルからデータ呼び出し。

ログファイル(例えば1.logという名前とします)の中身を呼び出し、それを現在表示されているcgiのフォーム内に 表示させるにはどのようにしたらいいのでしょうか? たとえば、クッキーみたいに <input type=text name=021118 value=***></input> とすればできるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.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; }

KODAMAR
質問者

お礼

回答ありがとうございます。 無事できました。 今までログファイルの中身を読み込む、ということをしたことがなかったので、まったくわかりませんでした。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

>たとえば、クッキーみたいに ><input type=text name=021118 value=***></input> >とすればできるのでしょうか? クッキーでもそのような記述だけで取得できないと思いますが・・・。 つまりログ内のデータにパラメータ名とデータが"="で対になっているものを&で繋げて保存しているのですね。 split関数を使ってキーワードで分割すれば良いです。 GETやPOSTでの送信時のパラメータの受取りやCookieのデータ取得と同じです。 あとは普通の掲示板の保存・取得の仕組みとかですね。 @分割された配列 = split /&/,$分割する文字列; foreach $p_data (@分割された配列){  ($name,$data) = split /=/,$p_data;  $PARA{"$name"} = $data; } これで$PARA{"パラメータ名"}で取得できます。

KODAMAR
質問者

お礼

回答ありがとうございます。 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)
回答No.1

HTML の話でしょうか・・・ であれば <textarea name=021118>*****</textarea> のほうがよいとは思いますが。 log 自体の読み込みは open とか使えばいけますよね。って そういう意味ではない? どのレベルの話なんでしょうか・・・

KODAMAR
質問者

お礼

回答ありがとうございます。 ログファイルにcgiを使って書き込みをして、openで開けますよね? 私はその中身をベタで表示(そのまま何の加工もせずに表示)しかしたことがないのですが、 021118=14&021119=15 というような中身だった場合、それをフォーム上で表示させる時に、 021118のデータは「14」、021119のデータは「15」と認識させたいのです。 これはどうしたらいいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • textareaを使ったデータ呼び出し

    CGIで書き出すHTML部分の改良をしています。 print <<EOF; <input type=text name=comment size=50 value="$comment"> EOF これを textarea を使ってデータの呼び出し、書き換えをしたい のですが上手くできません。 記述の仕方を教えて頂けないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Perl
  • フォームデータのcsv保存について

    お世話になります。フォームに入力されたデータを csvファイルに保存するというcgiの作成をしています。 初めてcgiを作成するので、書籍の真似をして作成した のですが、おかしいデータが保存されてしまいます。 質問の項目数は5個で以下のとおりです <FORM ACTION="./ans1.cgi" METHOD="POST"> 名前:<br> <input type="text" name="name" size=30> <br> 1:<br> <input type="text" name="a1" size=30> <br> 2:<br> <input type="text" name="a2" size=30> <br> 3:<br> <input type="text" name="a3" size=30> <br> 4:<br> <input type="text" name="a4" size=30> <br> <INPUT type="submit" value="送 信"> <INPUT type="reset" value="リセット"> <BR> </FORM> cgiの中身です。 #! /usr/bin/perl require './cgi-lib.pl'; $answer = 5; $ansfile = "kotae.csv"; &ReadParse(*in); $name = $in{'name'}; for($n = 1; $n <= $answer; $n++ ) { $a[$n] = $in{"a$n"}; } open (FILE,">>$ansfile"); flock (FILE,2); print (FILE "\"", $name); for($i = 1; $i <= $answer; $i++ ) { $a[$i] = ~ s/\"/""/g; print FILE "\"\,\""; print FILE $a[$i]; } print FILE "\"\n"; flock(FILE,8); close(FILE); print "Content-type: text/plain\n\n"; print "<HTML><BODY>\n"; print "tesuto"; print "</body></HTML>"; exit; csvファイルの中身を見ると、最初の列には、項目1で 記入したデータが入ってますが、項目2以降 は4294967295と数字が入ってます。どうも1個目の回答 欄のデータはちゃんと取得されてるのですがそれ以降の が取得されていないみたいです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • フォームの内容を確認するページをはさむ方法

    htmlのフォームに記入してもらった内容を、そのままデータに書き込むcgiに送信するのではなく、一回内容を表示した確認cgiをはさみたいのですが、どうすればよいのでしょうか。 とりあえず、今の状態は、htmlファイルから読み込むデータを"name","mail","coment"の3つとしてます。 enquete.htmlファイルの一部: <FORM method="POST" action="enquete.cgi"> <TABLE> <TR> <TD>名前</TD> <TD><INPUT type="text" name="name"></TD> <TD>メールアドレス</TD> <TD><INPUT type="text" name="mail"></TD> <TD>コメント</TD> <TD><INPUT type="text" name="coment"></TD> </TR> <INPUT type="submit" value=" 送 る ">    <INPUT type="reset" value="やり直す"> のような感じです。 これに確認cgiをはさんで、 enquete.html"確認ページへ" →kakunin.cgi"送る" →enquete.cgi"戻る" みたいな構成にしたいのですが、kakunin.cgiの実装の仕方を教えてください。また、それにともない、直す箇所も教えてください。 おねがいします。

    • ベストアンサー
    • CGI
  • フォームタグを送信した後に表示されるページ

    フォームタグを送信した後に表示されるページを指定したいのですが、どうすればいいのか分かりません。タグは <form method=POST action="フォームサービスのCGIアドレス"> <input type=hidden name="_mailto" value="私のメアドです"> あなたのお名前<br> <input type="text" name="name"><br> (略) <input type=submit value="送信"> こんな感じです。 よろしくお願いします。

  • ファイルのデータがなくなってしまします・・・

    perl/CGIプログラミングの勉強中の者です。 フォーム記入(日付選択、本文の記入、ファイル選択)後、確認画面において、上記をベタ書きにて表示し(ファイルはパスの表示)、CSVへの書き込み、指定フォルダへのファイルのアップロードをするプログラムを作っています。 ファイルのアップロードに関してなのですが、 <input type=file name=fileup> でsubmitした後、 確認画面で$FILEに格納して一旦パスを表示、 それを再び <input type=hidden name=fileup value=$FILE> でsubmitして、 フォルダへアップロードし、一覧画面へと戻るという手順で組んでいます。 しかし、ファイル名、拡張子などは正しくアップロードされているのですが、肝心の中身のデータが0バイトになってしまいます。 自分では確認画面からsubmitする時にhiddenに入れているのがいけないのかなぁ。と思っているのですが… 何か良い対処法、また他に良い手順があれば教えてください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • もっとも初歩的なデータの渡し方を

    もっとも初歩的なデータの渡し方を教えていただけませんか。 <FORM ACTION="next.cgi" METHOD="POST"> <INPUT TYPE="TEXT" NAME="内容" SIZE="12"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form> next.cgiでどう書けば「内容」が表示されますか? まったく初心者の質問ですみません。

    • ベストアンサー
    • Perl
  • inputタグのtype値がfileの場合にデフォルト値を表示させたい

    フォームの中にデフォルト値を入れたい場合は、例えば  <input type="text" name="id" id="id" value="A25" /> のように、inputタグの中のvalue値を指定すれば良いわけですが、type値がfileの場合、  <input type="file" name="photo" id="photo" value="flower.jpg" /> のようにしても、フォームは空白のままです。 どうにかして、この場合でもデフォルト値が表示するように出来ないものでしょうか?

    • ベストアンサー
    • HTML
  • POSTデータのNAME属性をVALUEによって取得する方法

    HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • UPDATEのファイルを1つに統一させる?

    複数ファイル(FORM)の内容を全部1つに集約できればよいのですが・・・。 302.htm <INPUT type = "text" name = "hagi"> <input type="submit" value="新規登録"> <input type="reset" value="やり直す"> <input type="hidden" name="mode" value="confirm"> 303.htm <INPUT type = "text" name = "hoge"> <input type="submit" value="新規登録"> <input type="reset" value="やり直す"> <input type="hidden" name="mode" value="confirm"> 上記内容だと両方ともconfirm.phpにいき処理させようとしますが、UPDATE文がちがってしまうのでむりですよね? やはり1つのフォームにつき、1つの更新処理ファイルが必要でしょうか?1つのファイルにできてもifで分岐させては意味があり ません。 1つのUPDATE文、INSERT文で省略できないものかをお尋ねします。 複雑になってしまうなら、いままでどおりファイルをわけて書く予定です。

    • 締切済み
    • PHP
  • htmlのcheckboxのデータをcgiファイルで表示できない?perl初心者の質問。

    htmlの中でcheckboxのデータをcgifile で表示できません。構成は 入力用のhtml file、それを受け取るcgi file、表示用のalert.htmlファイルです。 my $kako = $query->param('kako'); #html fileからのデータ受け取り用です #下のスクリプトは表示のためのperlコードとして書いています。 if($e_kako){ $t_kako.="<input type=\"checkbox\" name=\"kako\" value=\"裁断\"> 裁断 "; $t_kako.="<input type=\"checkbox\" name=\"kako\" value=\"中とじ\"> 中とじ "; $t_kako.="<input type=\"checkbox\" name=\"kako\" value=\"無線綴\"> 無線綴 "; $t_kako.="<input type=\"checkbox\" name=\"kako\" value=\"穴開け\"> 穴開け"; }else{ $t_kako = "$kako <input type=\"hidden\" name=\"kako\" value=\"$kako\">\n"; } #alert.htmlには下のようにして渡しています。 sub replaceTags{ foreach (@html){ s/<CGI:error message>/$errMsg/i; s/<CGI:error num>/$errNum/i; s/<CGI:kako>/$t_kako/i; データの渡し方がわからないのでよろしくお願いします。 下の場合はうまくいってます。 # page $t_page="<input type=\"text\" size=\"10\""; $t_page .= "name=\"page\" value=\"$page\">\n";

    • ベストアンサー
    • Perl