PETROOM大改造
【萌え萌えキャラクターズと遊ぼー。】

禁止ワードで変なお名前を制限しよう

「改造サポートBBS」の方に、最新の改造方法が掲載されています。
ワード検索「禁止ワード」などで検索してみてください。

以降は、過去の足掻きです(笑)

世の中、いろんな人がいますからね(^^;
ネットはたくさんの楽しい人達が遊びに来て下さる反面、
招かれざるお方も、サックリと訪れることが出来てしまいます。

PETROOMも、「お名前」はユーザーが好きに入力できますし、
そのお名前は、飼い主ランキングでどど〜んと表示されるわけでして・・・(^^;
・・・もう、遊びに来て下さる方の良心に委ねるしかないのですが、
そうも言っていられない場合もあるわけです、うぐぅ。

ということで「こんな言葉を含む名前はダメです!」という、
禁止ワードの設定を追加しましょう。

これを追加することにより・・・、
変なお名前での新規登録が出来なくなる。
すでに登録されている名前に関しては、遊べなくなる。
(つまり、そのうち期間が過ぎて削除される)


最初、すでに登録されている人は削除する方向で考えていましたが、
なにやら文字コードというのがあって、いまいち理解を深めることが出来ず、
間違って消してしまうのは大変申し訳ないので、このような方法に変えました。

まともなお名前なのに遊べない、という苦情が来ましたら、
すみませんが、R.C.T-eまでご連絡下さい。
文字コードまわり、しっかり勉強して作り直しますです(^^;

一応現段階のプログラムでも、設定した言葉を含むお名前は登録できませんので、
機能としては充分に働くと思いますが、
禁止ワードをあまり短い言葉に設定しないでください。
特にアルファベットやひらがな・カタカナは、短い言葉ですと、
まともなお名前にも含まれている可能性が出てきますので。


では、早速追加しましょう、結構簡単です。
まず、禁止ワードの設定から。
###設定はここまで### の直前に下記のように追記してください。

# 終了時に画像を表示する(yes = 1,no = 0)
$ending      = 1;
# 終了画像
$endimg      = 'neteru.gif';
# 終了時のメッセージ
$endmsg      = 'お疲れ様でした';
# 禁止ワード
@kinshiword = (
                '馬鹿',
                '阿呆',
                '殺す',
                '殺し',
                '死ね',
                '死ぬ',
                'baka',
                'korosu',
);

# ########################設定はここまで############################
# ここから先を変更する場合はご自分の責任において変更してください。

シングルクォーテーションの間に、禁止したい言葉を記入してください。
言葉の数を変更したいときは、カッコの間でコピペでOKです。

次に、お名前をチェックして、警告文を出すところです。
ユーザー情報をチェック(sub checkname)に、下記のように追記して下さい。

# ------------------------- #
# Sub Check Name
# ユーザー情報をチェック
# ------------------------- #
sub checkname {
    local($flag) = 0;

    # 未入力をチェック
    if (!$FORM{'name'}) { &error("名前がありません");       }
    if (!$FORM{'pass'}) { &error("パスワードがありません"); }

    # 禁止ワードのチェック
    foreach $kinshi (@kinshiword) {
        if ($FORM{'name'} =~ /$kinshi/i) {
            &error("不適切な言葉が含まれています");
        }
    }

    &openinuserdata('checkname');

    # 新規ユーザーを登録
    if ($flag == 0) {
        $gdate = time - $dayhour[$playtime + 1];
        @new = @lines;
        push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>0<>\n");
        &openoutuserdata;
    }

これで、禁止ワードに設定した言葉を含むお名前を入力すると、
「不適切な言葉が含まれています」でエラーになり、
先に進むことが出来なくなります。

で、ですね、バグ報告がございましたので、公開いたします(^^;
この改造を施したあとに、禁止ワードを一つも設定しないと、
全てのお名前が、禁止ワードとして、引っ掛かってしまいます(!)
この改造を行うということは、禁止ワードの設定が欲しかったから、だと思うので、
1つも設定しない方はごく希かと思いますが、
申し訳ありませんが、最低必ず1つは禁止ワードを設定して下さい。
チョット長めのあり得ない文字列なら、引っ掛かることはないと思いますので。




そしてそして、今まで謎だった「ー」(伸ばす音)を含む単語で、
エラーになってしまう件ですが、原因が分かりましたっ!
【ゆ〜り師匠、ありがとございます〜(T▽T)】
詳しくは、サポートBBSの過去ログを参照していただきたいのですが、
とりあえず、どうやったら「ー」を使えるのか、を説明しますね。

例えば、「アージュ」という単語を含む名前を禁止したいとします。

@kinshiword = (
                '馬鹿',
                '阿呆',
                '殺す',
                '殺し',
                '死ね',
                '死ぬ',
                'baka',
                'korosu',
                'アージュ',
);

本来なら、こう書きたいところですが、これだとエラーになってしまうので、

』を『―[』に置き換えて、

@kinshiword = (
                '馬鹿',
                '阿呆',
                '殺す',
                '殺し',
                '死ね',
                '死ぬ',
                'baka',
                'korosu',
                'ア―[ジュ',
);

このようにします。

コピペで持っていかれるのが一番確実ですが、

』は、シフトJISコード表で「ー」の次の文字、
[』は、普通の半角のカギかっこです。

「ー」を、(↑)この2つを並べたモノ『―[』に置き換えます。

少し設定が大変ですが、ご了承下さいませ。
文字コードは…、難しいです(^^;;;