bass-inu's blog

非IT企業Web担当者だった無職の雑記

コメントスパム対策!日本語を使用していない投稿を拒否

オープンソースCMSである「baserCMS」でサイト構築したんですが、
設置したブログからさっそくコメントスパムが…

最近のスパムってやつは、意味のない英語文字列だけ打ってきたりするんですよね。
何の意味があるのか…。
それだけなら半角英数のみの投稿を弾けばいいんだけども、巧妙に全角スペース1文字入れてきたりする。
キィーッ(#・∀・)


ということで、正規表現を用いて
全角文字(日本語)を連続2文字以上入れないと投稿できない!
としてみます。
国内向けサイトなので、普通にコメントすれば自然と2文字以上は入力するでしょう。
当然ですが日本語のスパムは防げません…。


今回はbaserCMSの例でやりますが、あらゆるフォームで応用出来ると思います。
やり方はわからないけど(笑)

下記ファイルを編集

/baser/plugins/blog/models/blog_comment.php

'message' => array(
array(	'rule'	=> array('notEmpty'),
'message'	=> "コメントを入力してください。")
)

この部分を、

'message' => array(
array(	'rule'	=> array('custom','/[ぁ-んァ-ヶー一-龠、。!?]{2,}/u'),
'message'	=> "コメントを入力してください。")
)

と変更します。

説明

ぁ-んァ-ヶー一-龠、。!?

この部分が許可する文字の範囲。
ひらがな、カタカナ、漢字、句読点、ー!?


数字も許可範囲に入れたいって場合は、0-90-9を追記する。

二字熟語が入っていれば許すって場合は、一-龠のみにする。ひらがな、カタカナのみの投稿はお断り。大人向け(?)

{2,}

上記範囲内の文字を2回以上繰り返せばOKという意味。
50文字未満のコメントなどコメントではないという場合は、{50,}とすれば完璧です。ハードルの高いサイト向け。

動作確認

こちらを使わせていただきました。
preg_match()正規表現チェッカー
正規表現の欄に「/[ぁ-んァ-ヶー一-龠、。!?]{2,}/u」と入れて色々な文字列でチェック!

baserCMSについて

シンプルで使いやすいCMSです。
ファイル構成がわかりやすく、私のようにあまりプログラムがわからない人にも優しめ(^O^)

baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』

htaccessで正規表現を使ったリダイレクト -フォルダ分け-

※Qiitaにも書いた
htaccessで正規表現を使ったリダイレクト - Qiita


サイトの移転や構成を変えた時に使用するリダイレクト。
今回はディレクトリを丸ごと移動した時用のhtaccessメモ。

今まで「西暦+月」でディレクトリを作っていた

/201001/
/201002/
:
:
/201201/
/201202/
:
:

当たり前ですがだんだんフォルダ数が多くなってきて面倒くさい感じに。

こうしたい

/2010/01/
     /02/
:
:
/2012/01/
     /02/
:
:     

これで管理がラクに…!
ということでサイト内お引越し開始。
フォルダを移動させ終わって、あとは古いURLにアクセスがあった際に新しいURLへ転送されるようにする。

.htaccessにこの1行。

RedirectMatch permanent ^/(2010|2011|2012)([0-9]{2})/(.*)$ /$1/$2/$3

これで完了。
この例だと2010~2012年分のフォルダにのみ適用される。

2000年~20XX年までリダイレクトしたいとき

RedirectMatch permanent ^/(20[0-9]{2})([0-9]{2})/(.*)$ /$1/$2/$3

2000年以前のディレクトリもあるとき

RedirectMatch permanent ^/([0-9]{4})([0-9]{2})/(.*)$ /$1/$2/$3

サイトのURLも変わった時

RedirectMatch permanent ^/([0-9]{4})([0-9]{2})/(.*)$ http://移転先URL/$1/$2/$3


基本の形

RedirectMatch permanent 移転前パス 移転後パス


今回のリダイレクトの中身

移転前→ ^/([0-9]{4})([0-9]{2})/(.*)$
移転後→ /$1/$2/$3

正規表現数字4桁,数字2桁,全ての文字列 となっています。
この中身を変えれば色々できますね。


その他htaccessに関する記事

Codecademy始めました

はてダからはてブロに引越しました!
と言ってもクリックしただけ(笑)便利ですね~。

最近はJavaScriptをちゃんと勉強しようと思い、ウェブ上で勉強できるCodecademyを始めてみました。
コードの書き方を学ぼう | Codecademy
f:id:bass-inu:20120930204138p:plain
日本語化されてるはずなんですが…なぜか英語でしか表示されない…

問題が出されてそれに回答していくのですが、全部英語なので大変です。
まだまだ先は長そうですが、ぼちぼちやろうと思います。

twitterの新しいウィジェットをカスタマイズしたメモ

新しくなったという事で。
Twitterブログ: サイト向けに「埋め込みタイムライン」ができました
ウィジェット上から直接リツイートやお気に入り、フォローなどが出来るようになってます。

作成方法

こちらから簡単に設定&作成ができる。

この設定…「高さ」はあるのに「横幅」の項目がない…。
公式ドキュメントを見ると、
Embedded Timelines | Twitter Developers
作成されたコードのaタグ内に設定を追記すると指定できるとのこと。
さっそく、width="700"と打ち込んだらことごとく無視されましたよ。。


よく見たら横幅は220px〜520pxと書いてあった。
高さは350px以上しか設定できません。


700pxじゃなきゃやだー!!と思ったので
ウィジェット設置後のHTMLを確認(firefoxアドオンのfirebugで)

<iframe id="twitter-widget-1" scrolling="no" frameborder="0" classname="twitter-timeline twitter-timeline-rendered" style="border: medium none;" width="520" height="350">

こう出力されていますね。この中の

id="twitter-widget-1"

これを利用すればいけるんじゃ…?!


cssを書きます。

<style type="text/css">
#twitter-widget-1 {width:700px;}
</style>

これで無事700pxで表示されました!
無理矢理な感じがありますが…。

そのうち自由に設定できるようになるんでしょうか…?


あとさぁ…

日付表示がちょっとおかしいです。
9月月5日 (゚Д゚;
これはそのうち直るよね、きっと…


追記:直りました!

翻訳ファイル「.mo」「.po」の編集

LimeSurveyという超高機能アンケートシステムを設置中。
海外産のシステムですがデフォルトで日本語化されてて助かる。
しかしところどころ日本語訳を変えたい箇所があったので、言語ファイルをいじろうとしたら「.moファイル」が手持ちのエディタで開けない!
何コレ?!


そんなわけでメモ。

Poeditをダウンロードしてインストール

ここからWindows版をダウンロード

Poedit: Download

コマンドプロンプトで.moを.poに変換

.poに変換すればエディタで開けるみたいなのでコマンドプロンプト起動。
インストールしたPoeditフォルダの中の「bin」フォルダに移動する。

cd C:\Program Files\Poedit\bin

続いて.moを.poへ変換。
Win7でデスクトップにmoファイル(ja.mo)を置いていて、同じ場所にpoファイル(ja.po)を出力したい場合…

msgunfmt.exe "C:\Users\(ユーザー名)\Desktop\ja.mo" -o "C:\Users\(ユーザー名)\Desktop\ja.po"

poファイルを編集

Poeditでも手持ちのエディタでも開けるので、編集して保存

poファイルをmoファイルへ変換

もとに戻す。
同じくデスクトップに出力する場合。ちなみに元あったmoファイルはリネームしといた。

msgfmt.exe "C:\Users\(ユーザー名)\Desktop\ja.po" -o "C:\Users\(ユーザー名)\Desktop\ja.mo"

完了!