Trackback.phpのアップデート

category-icon

こんばんは、martinです。トラックバックスパム対策にて、trackback.phpをアップデートしたのですが、正規表現で不備があったので、その修正版をアップしておきます。変更点は、昨日のコメントLink にもありますが、trackback.phpの56行目あたりを、

$jp_pattern = '{(
    (?:¥xA4[¥xA1-¥xF3])+| # Hiragana
    (?:¥xA5[¥xA1-¥xF6])+ # Katakana
)}x';

としています。最後にパイプ(|)が入っていたのですが、これだと、何でもすり抜けてしまいます。ほんとは、この正規表現の後に半角カタカナのやつも入れていたのですが、これは不要だろうと考えて削除して、その前のパイプが残ってしまいました。

 あと、アクソン付きのアルファベット(フランス語)なんかも、たまにすり抜けるようですね。。これは、69行目を

if(preg_match('{^[¥x20-¥x7E[:alnum:]]+$}', $target)){

とでもしたら良いですかねぇ。他言語のときはイマイチ知識不足。。最初の修正を入れていれば、その時点でアクソン記号のやつも弾きそうな気はしますが、いかがなもんでしょう。

添付ファイル: trackback.phpattachedIcon 

— posted by martin at 06:37 pm   commentComment [0]  pingTrackBack [0]

差分アップデート・・・

category-icon

 こんにちは。昨日、久しぶりにアップしたのですが、コメントが付かないなど基本的なところでミスってました。うーむ、情けない(-o-)

 トラックバックは、デフォルトでは、トラックバックしてきた相手にこちらのリンクがあるかどうかのチェックを入れてみたのですが、この仕様はサーバー依存なところもあるので、デフォルトではオフにしました。使えるところでは有効にしてよいと思います。

 現時点での差分を添付しておきます。

追記

[2006/10/26 20:4:46] コメントモジュールで、英数字のみの場合のフィルターが抜けていたので、修正しています。modules/comment.inc.php です。

 

添付ファイル: DIFF061026.zipattachedIcon 

— posted by martin at 11:30 am   commentComment [11]  pingTrackBack [0]

 

YouTubeやグーグルビデオ、Soapboxのための記法

category-icon

ひとつ前のエントリーで書きましたが、記法は簡単です。次のようになります。

[yt:(ビデオのID):横幅:縦幅]
YouTubeなら、yt、Googleビデオならgv、マイクロソフトsoapboxならsbです。縦と横のサイズ(整数)は省略できるので、簡単にしたいなら、ビデオのIDを記述するだけでOKです。具体例で見ていきましょう。
[yt:hEYHvLnVcnQ::]
と記述すると(任天堂ゼルダ曲のピアノ演奏、再生すると音が出ますよ)、 次は、GoogleVideoの場合。
[gv:-5379890076544103730::]
と記述すると(任天堂マリオ曲のピアノ演奏)、[gv:-5379890076544103730::]最後に、マイクロソフトのSoapbox。
[sb:022cb97f-95f8-403a-9c1b-5032c70de2e1::]
と記述すると(任天堂Wiiのゼルダデモ映像)[sb:022cb97f-95f8-403a-9c1b-5032c70de2e1::]

 こんな感じです。簡単ですね。この記法のために、スタイルシート用ですが video-linkというクラス名を出力するようにしました。このbasicのテーマの場合は、basic.cssにて次のように指定しています。

/*--------------[ 外部動画 ]-------------*/
.video-link {
  width: 425px; margin: auto; z-index:1;
}

 とりあえず、代表的な3つのビデオサイト向け記法を用意しましたが、utils.phpのソースを見れば分かるように、今後いくらでも追加できるようにしています。この手のは、たいていFlashを用いていますから。ちなみに、utils.phpの該当部分は以下のようになっています。配列なので、FLASH系なら、いくらでも追加できると思います。

 // 外部動画リンク表示処理 (YouTube, Google Video, SoapBox MSN, and so on...)
 if(preg_match_all('{¥[(yt|gv|sb):([0-9a-z¥-]+?):(¥d+?|):(¥d+?|)¥]}i', $com, $movlinks)){
  $length = count($movlinks[0]);
  $embeds = array( # src, type, others, width/height
   'yt' => array('http://www.youtube.com/v/', 'application/x-shockwave-flash', '', '425,350'),
   'gv' => array('http://video.google.com/googleplayer.swf?docId=', 'application/x-shockwave-flash', 'id="VideoPlayback"', '400,300'),
   'sb' => array('http://images.soapbox.msn.com/flash/soapbox1_1.swf?v=', 'application/x-shockwave-flash', 'wmode="transparent" name="msn_soapbox" flashvars="c=v&v=SB_MOV_ID"', '412,362'), //
  );
  for($i=0; $i<$length; $i++){
   $_mv = NL.'<div class="video-link">'.NL;
   $tar = $embeds[$movlinks[1][$i]];
   list($def_w, $def_h) = explode(',', $tar[3]);
   $w = $movlinks[3][$i]=='' ? $def_w : $movlinks[3][$i];
   $h = ($h=$movlinks[4][$i])=='' ? ($movlinks[3][$i]=='' ? $def_h : ceil($w * .75)) : $h;
   $_mv .= ' <object style="width:'.$w.'px; height:'.$h.'px;">
  <param name="movie" value="'.$tar[0].$movlinks[2][$i].'"></param>
  <embed src="'.$tar[0].$movlinks[2][$i].'" type="'.$tar[1].'" '.str_replace('SB_MOV_ID', $movlinks[2][$i], $tar[2]).' width="'.$w.'" height="'.$h.'"></embed>
 </object>';
   $_mv .= NL.'</div>'.NL;
   $com = str_replace($movlinks[0][$i], $_mv, $com);
  }
 }

— posted by martin at 12:54 am   commentComment [3]  pingTrackBack [1]

 

ppBlog1.5.4に

category-icon

こんばんは。地元ソフトバンクホークスは3年連続プレーオフで敗退。まぁ、昨年はロッテが久しぶりということで、今年こそはと思ったのだけれど、今年はロッテでも西武でもなく、日ハムじゃないですか。まぁ、久しぶりのようだからこのまま日本一になって欲しいと思うmartinです。ホークスが日本一になったときは、そりゃ嬉しかったからなぁ。北海道も盛り上がるだろうな。

 という訳で、久しぶりにバージョンアップしました。ネットを見渡すと、ブラウザではIE7の正式版(今は英語版だけかな)が出たし、今日(25日)はFirefox2.0がリリースされ、タイミング的にはいい塩梅です?;w)

 今回はマイナーアップですが、メインはトラックバック(以下TB)スパム対策です。このブログでも週末になると、海外からのTBスパムの数がすごいことになります。それなりに、弾く仕組みは用意していたつもりなんですが、個別記事ごとのTBの許可設定などが無効であったバグがありましたし、そのあたりの修正も含めて、新たなギミックを追加しました。

 新しい仕組みとしては、TBしてきた相手のサイトに、こちらのサイトのリンクが含まれていなければ、つまり、TB上での相互リンクが成立しなければTBを受け付けない、というものです。これはまだ試験的な実装になりますが。一応、エキサイトブログから試しにTBを発射してみたんですが、エキサイト側のブログに、こちらのドメインのアドレスが含まれていれば(文中で言及していれば)TBを受け付け、リンクという形で言及がなければTBを受け付けなかったことを確認しています。これは、trackback.phpの17行目で有効、無効の指定が出来るので、まともなTBも弾いてしまうようなら、この部分を次のようにして下さい。

define('CHECK_REFERRED', FALSE);

仮にこの部分でTBを弾かなくても、TBのサマリー文に平仮名やカタカナが含まれていなければ却下という設定も出来るので、かなりのTBスパムが防げるのでは思っています。

  あと、目玉というわけではないのですが、最近の投稿ビデオブームを受けて、YouTubeやGoogleVideo、マイクロソフトのSoapboxビデオへのリンクを簡単に貼れる記法を追加しました。YouTubeの場合、次のように指定します。

[yt:(ビデオのID):横幅:縦幅]

同じく、GoolgeVideoは、ytの部分がgvになります。Soapboxならsbです。横と縦のサイズは整数で指定しますが、これは省略できます。また、横だけ指定だと自動的に縦も計算して表示します。数字の省略は出来ますが、2つのコロン(:)は必ず記入して下さい。

 具体例を次のエントリーで示します。あと、いつものように差分ファイルを


— posted by martin at 12:33 am   commentComment [3]  pingTrackBack [1]

T: Y: ALL: Online:
Created in 0.0332 sec.
prev
2006.10
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31