かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】

.htaccessユーザー認証用ユーザーファイル作成

#! /usr/local/bin/perl

loadFormdata();                            # フォームデータ取込

print qq(Content-type: text/html; charset=Shift_JIS\n\n);
print<<END;
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>.htaccessユーザー認証 ユーザーファイル作成</title>
    </head>
    <body>
    <h1 style="font-size:17px;text-align:center">.htaccessユーザー認証 ユーザーファイル作成</h1>
    <table align="center">
        <tr>
            <td>
END

printPage();

print<<END;
            </td>
        </tr>
    </table>
    <br>
    <br>
    <a href="/">トップページへ</a><br>
    </body>
    </html>
END

exit;


#================================================ 
sub    printPage
{
    my    $name = $FORM{'name'};
    my    $pass = $FORM{'pass'};
    my    $file = $FORM{'file'};
    my    $crypt = $FORM{'crypt'};
    if($name and $pass) {
        if($crypt) {                    # パスワード暗号化
            my    $soltset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxwz0123456789./";
            my    $n1 = int(rand length($soltset));
            my    $n2 = int(rand length($soltset));
            my    $salt = substr($soltset, $n1, 1) . substr($soltset, $n2, 1);
            $pass = crypt($pass, $salt);
        }
        $file .= $name . ":" . $pass . "\n";
    }
    elsif($name or $pass) {
        print qq(<font color="#ff3333">エラー:ユーザー名とパスワードを入力してください。</font><br>\n);
    }
    $file =~ s/(\x0D\x0A)+/\n/g; 
    print<<"    END";
        <form action="$ENV{'SCRIPT_NAME'}" method="POST">
            ユーザー名<br>
            <input type="text" name="name" size="50" style="ime-mode:inactive;"><br>
            パスワード<br>
            <input type="text" name="pass" size="50" style="ime-mode:inactive;"><br>
    END
    if(!($file)) {
            print qq(<input type="checkbox" name="crypt" value="1" checked>暗号化する(UNIX系Apache用));
    }
    else {
        print qq(<input type="hidden" name="crypt" value="$crypt">);
        if($crypt) {
            print qq(暗号化する(UNIX系Apache用));
        }
        else {
            print qq(暗号化しない(Windows版Apache用));
        }
    }
    print<<"    END";
            <br>
            <input type="submit" value="ユーザー追加"><br>
            <br>
            コピーしてお持ち帰りください。<br>
            <textarea name="file" cols="60" rows="20">$file</textarea><br>
            [ <a href="$ENV{'SCRIPT_NAME'}">リセット</a> ]<br>
        </form>
    END
}

#================================================ フォームデータ取込
sub    loadFormdata
{
    my    ($query, $pair);
    if($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
    }
    else {
        $query = $ENV{'QUERY_STRING'};
    }
    foreach $pair (split(/&/, $query)) {
        my    ($key, $value) = split(/=/, $pair);    
        $value =~ tr/+/ /;
        $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
        $FORM{$key} = $value;
    }
}
CGI(Perl)
Hello world ! ユーザーエージェント取得・表示($ENV{'HTTP_USER_AGENT'})
IPアドレス取得・表示($ENV{'REMOTE_ADDR'}) リンク元取得・表示($ENV{'HTTP_REFERER'})
URL取得・表示($ENV{'HTTP_HOST'}, $ENV{'REQUEST_URI'}) 環境変数を全て表示(%ENV)
ホスト名取得・表示(gethostbyaddr) 訪問者のプロバイダーを表示
訪問者の都道府県を取得・表示 日付を表示(localtime time)
日付を画像表示(localtime time, substr) アクセス日時を表示(localtime time)
指定の日までの日数を表示 曜日によって背景色を変える
日によって背景色を変える 月によって背景色を変える
見るたびに背景色を変える 見るたびに背景画像を変える
おみくじ(rand, int) カラーチャート
Shift_JIS文字コード表 UTF-8文字コード表
グラフ(横棒グラフ) アクセスカウンター
アクセスカウンター(画像) アクセスカウンター(今日・昨日)
訪問回数(クッキー, $ENV{'HTTP_COOKIE'}, Set-Cookie) アクセスログ保存
アクセスログ集計 パスワード認証
クッションページ($ENV{'QUERY_STRING'}) クッションページ($ENV{'PATH_INFO'})
フォーム入力内容をクッキーに保存 1つのCGIでフレームページを表示
IPアドレスからホスト名を取得(gethostbyaddr) ホスト名からIPアドレスを取得(gethostbyname)
IPアドレスからプロバイダーを取得 IPアドレスから都道府県を取得
文章中の文字列を別の文字列に一括変換 カレンダー
カレンダー(前月・次月へのリンク付) カレンダー(今年1月〜12月)
掲示板 掲示板(URL自動変換/連続改行・スペース削除)
掲示板(年齢・性別・都道府県選択) 画像アップロード掲示板
チャット Web日記
サイトマップ(ディレクトリ内のファイルを調べる) Webデータ取得(HTTPヘッダー, HTMLソース, use Socket)
Webデータ取得(HTTPヘッダー, HTMLソース, use HTTP::Request::Common) トラックバック受信
トラックバック送信 メール送信(メールフォーム, sendmail)
リバーシ(ボードゲーム) .htaccessユーザー認証用ユーザーファイル作成
リダイレクト 条件指定リダイレクト
言語振り分けリダイレクト 条件指定アクセス拒否(ステータスコードを返す)
HTMLファイル読み込み・表示 HTMLファイル読み込み・パスワード認証
HTMLファイル読み込み・条件指定アクセス拒否 HTMLファイル読み込み・条件指定リダイレクト
外部CGIファイル読み込み(require) 画像ファイル読み込み・表示
画像縮小・拡大・サイズ変更(Image::Magick, Resize) 画像切り出し(Image::Magick, Crop)
画像文字埋め込み(Image::Magick, Annotate) 画像合成(Image::Magick, Composite)
画像生成・保存(Image::Magick->new) 画像合成アクセスカウンター
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】