HOME > ETC. > STARTING OVER日記。 > 2008年04月13日

STARTING OVER日記。

 
« 2008年04月11日 | インデックス | 2008年04月14日 »

 

2008年04月13日(日)

それはそうと。 

昨日、自分ちのサイトなのにやたら重かったので、Inetdさん発行のログを久々にダウンロードして見たら、アメリカの某サーバから絨毯爆撃…。
通常の10倍以上のアクセスがあり、時間帯によってはひっきりなし。

基本的に.htaccessでの制限はしない方向なのですが、さすがにこれは困る。
そんなわけで、そこのサーバだけは制限させて頂きました。
ま、Googleで検索してもそこのサーバ、スパム発信元として有名なようなのでよいかと。

でも明日からエラーが出まくるのかなぁ。
それもまたツラいですが。

 

くじびき。 

くじびきCGIを少々見直し。
冗長な部分を整理しました。

ベースは以下のような感じになりましたとさ。

#!/usr/local/bin/perl

$self = $ENV{ 'SCRIPT_NAME' };

$title = "ラッキーソ\ングおみくじ";
$setsu = " 本日のラッキーソ\ングは";

# 結果のCSS
$result_css = "font-size:18px;font-weight:bold;";

#データファイル
$file = './title.dat';


if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

    print "Content-type: text/html\n\n";
    print <<"EOF";
<html>
<head>
<title>$title</title>
</head>

<body>
<h1>$title</h1>
EOF

if ( $buffer eq "" ) {
    print <<"EOF";
<h2>くじをひきましょう。</h2>
<p> 下の[Click!]を押して下さい。</p>
<form method="post" action="$self">
    <input type="submit" name="submit" value=" Click! ">
</form>
EOF
}

else {
    if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
    local(@BASE) = <IN>;
    close(IN);
    $dat_num = @BASE;

    # 乱数を発生
    &rand;

    print <<"EOF";
<h2>くじをひきました。</h2>
<p>$setsu</p>
<p style="$result_css">$kuji</p>
<p>です。</p>
<p> もう一度引き直す場合は<a href="$self">最初に戻って</a>下さい。</p>
EOF
}

    print <<"EOF";
</body>
</html>
EOF
exit;

# 乱数を発生させるサブルーチン
sub rand {
    srand;
    $x = int(rand($dat_num));
    $kuji = $BASE[$x];
}

実際はスタイルシートとか見た目部分をいじっているのでこの通りではないですが。

あ、title.datには歌のタイトルを羅列で。
(1行1タイトル。)
※ファイル名はこの通りではありません、念のため。

ラストのほうの「srand」はperlのバージョンによっては要らないっぽいですが、一応ね。