トップページphp
17コメント8KB

CGIスクリプト評価スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/04/28 01:24ID:WlAStrLr
おまえらの作ったスクリプトを晒してください。
当方PerlしかわからないのでPerlのみで。
ただし自作スクリプトに限る。
0002nobodyさん02/04/28 01:48ID:b3pLvKk0
>1
まずはあんたのスクリプト公開せーや
0003nobodyさん02/04/28 01:50ID:???
>>2
くそ、3時間くらい放置して悲惨な1のいるスレにしようと思ったのに(ワラ
0004nobodyさん02/04/28 01:53ID:???





























0005nobodyさん02/04/28 01:54ID:???































0006102/04/28 02:02ID:???
正直、1つも作ったことがない。
0007nobodyさん02/04/28 02:11ID:???
じゃあ今から書いて公開すれ。
0008nobodyさん02/04/28 13:11ID:???
#!/usr/local/bin/perl

$Pass = "pass"; #パスワード
$File_Access = "log.txt"; #ログファイル
$File_Print = "print.txt"; #プリントファイル
$max_log = 100; #最大保存件数
$prt_log = 10; #表示件数

#引数チェック
if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; }
else{ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }

unless($buffer){ &lock; }
if($buffer eq $Pass){ &print; }
exit;

#ロック処理開始
sub lock{
$rename = "lock".time(); $cnt = 0; $check = 0;
while($cnt > -1){
if(rename("lock",$rename)){
#リネームできたら処理をする
&count;
#処理が終わったら名前を戻し、ループを抜ける
rename($rename,"lock");
last;
}else{
#リネームできなかったら1秒待って繰り返す
$x[$cnt] = substr(<lock*>,4); sleep(1); $cnt++;
#5秒待ってリネームできない場合は「以前に異常終了していた」とみなす
if($cnt > 4){ rename("lock".$x[0], "lock"); $cnt = 0; $check++;}
if($check > 1){ exit; }
}
}
}
0009nobodyさん02/04/28 13:12ID:???
#カウントアップ処理
sub count{
#アクセスログファイルオープン
open(IN,"$File_Access"); $log = <IN>; close(IN);

#各構成子作成
$count = substr($log,0,index($log,",")) + 1;
$referer = $ENV{'HTTP_REFERER'};
$addr = $ENV{'REMOTE_ADDR'};
$host = $ENV{'REMOTE_HOST'};
$agent = $ENV{'HTTP_USER_AGENT'};
if ($host eq "") { $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2)
|| $addr; }
elsif ($host eq $addr) { $host =
gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }
$ENV{'TZ'} = "JST-9";
($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
$date_now = sprintf("%02d/%02d/%02d", $year - 100, $mon + 1, $mday);
$time_now = sprintf("%02d:%02d:%02d", $hour, $min, $sec);
$times = $date_now."-".$time_now;

#構成子整理
if($log){ $log = "$count,$times,$agent,$addr,$host,$referer<>$log"; }
else{ $log = "$count,$times,$agent,$addr,$host,$referer"; }
0010nobodyさん02/04/28 13:12ID:???
#プリントファイル作成
($sec, $min, $hour, $mday, $mon, $year) = localtime(time() - 86400);
$date_yes = sprintf("%02d/%02d/%02d", $year - 100, $mon + 1, $mday);
@log = split(/<>/,$log);
($t,$y) = (0,0);
foreach $x (@log){
@x = split(/,/,$x);
if($date_now eq substr($x[1],0,8)){ $t++; }
elsif($date_yes eq substr($x[1],0,8)){ $y++; }
else{ last; }
}
$print = "Total: <b>".$count."</b> Hit<br>[T]".$t."/[Y]".$y;
open(OUT,"> $File_Print"); print(OUT $print); close(OUT);

if($#log >= $max_log){ @log = @log[0..($max_log - 1)]; $log = join("<>",@log); }
#アクセスログファイル書き込み
open(OUT,"> $File_Access"); print(OUT $log); close(OUT);
}
0011nobodyさん02/04/28 13:13ID:???
sub print{
print "Content-type: text/html\n\n";
print "\n";
print "<html>\n";
print "<body bgcolor=#eeeeee text=#000000>\n";

open(IN,$File_Access); $log = <IN>; close(IN);
@log = split(/<>/,$log);
$cnt = 0;
while($cnt < $prt_log){
@x = split(/,/,$log[$cnt]);
print "$x[0]     $x[1]<br>\n";
print "[USER_AGENT] : $x[2]<br>\n";
print "[REMOTE_ADDR] : $x[3]<br>\n";
print "[REMOTE_HOST] : $x[4]<br>\n";
print "[REFERER] : <a href=$x[5] target=_blank>$x[5]</a><br>\n";
print "<hr>\n";
$cnt++;
}
print "</body></html>\n";
}
■ このスレッドは過去ログ倉庫に格納されています