CGI-BBS > CGI > Perl > 動的に変化するページのカウントを個々にログに保存


カレッヂ
カレッヂ


質問者 ぱぱ  投稿日 9/19(金) 18:53:03
始めまして。

題名通りなのですが、
$f = $FORM{'n'};

	# データファイルを開く
	open (IN,"$logfile") || &error;
	@line = <IN>;
	close(IN);

	foreach $lin (@line){
		($no,$date,$name,$mail,$dev,$kid,$com,$url,$host,$pw,$tail,$w,$h,$tim,$chk) = split(/<>/,$lin);
if ($f eq $no)	{
      #ここにHTML出力
     }}
の用にフォームデータと記事番号をマッチさせ内容を表示させる
スクリプトに対して、記事番号ごとにPV数のカウントアップを行い
その配列に追加保存したいのですがどのような記述をすれば宜しいでしょうか?

ログファイルに関してまして、$countなどとして、カウント数を格納するものを
追加してもOKです。


ご教授お願いします。

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:その他
エディタ:
FTPソフト:
サーバ移転:していない
改造:している
CGI習熟度:advanced

回答者 しゅんじ  [削除]  投稿日 9/25(木) 09:47:14
とりあえず、ちょこっと作ってみました。
基本動作は、ファイルから読込んだ配列を更新して、元のファイルに上書き保存しています。

PVカウント用に、$chkの横に一つ要素が増えているとして、作業しています。
0番目の要素が$no。14番目の要素が$chk。15番目の要素にPV数。

If文で一致した場合、読込んだ配列に1足しています。
要素が作成されて無い場合は、1を追加しています。

後は、新しい配列をjoinでつなげてpushして、ファイルに上書きしています。
必要な部分は、適当に編集してください・・・・・・まとハズレならすんません。

use strict;

    my $f       = 0;
    my $logfile = "./test.txt";
    my @NewLine = ();

    # データファイルを開く
    open (IN,"$logfile");
        my @line = <IN>;
    close(IN);

    foreach (@line){
        my @DataSplit = split(/<>/,$_);

        if ($f eq $DataSplit[0]) {
            $DataSplit[15] = $DataSplit[15] + 1;
            $_ = join('<>', @DataSplit);

            # ここからHTML表示
            print "$DataSplit[15]";
        }
        push (@NewLine, $_);
    }

    open(OUT,">$logfile");
        print OUT (map("$_\n", @NewLine));
    close(OUT);
exit;

返信(回答)する

 


Web裏技