PXSMail with Akismet 日本語版

スポンサーリンク

コンタクトスパムって聞いたことがありますか? なに?聞いたことがない!w まぁ、私が言い出したんですけどね。 :mrgreen:

結構ウザいですよ、ポロポロ届くと・・・。そんな時、kohakuさんがいいプラグインを教えてくださいました。

WP Plugin: PXSMail with Akismet

コンタクトフォーム(メールフォーム)を簡単に設置できるプラグインです。PXSMail Pluginを基にAkismetをくぐらせるように改造したものらしいのですが、スパム封じに定評があるAkismetを利用するのですから期待は膨らみます。

WordPress plugin Download:
PXSMail with Akismet 日本語版
絶対条件
Akismetを有効化していること

導入方法

1. ファイルを解凍して、pxsmail.phpとpxsmail-ja_*.moの2つをwp-content/pluginsへアップロード。
2. PXS Mail Form,modified for Akismetを有効化する。
3. メールフォーム用に新規ページを作成し、本文中に {mailform}(すべて半角で) と書き込む。
4. 設定 » PXS-Mailで各設定を行なう。

必須項目を記入しないで送信すると外枠が赤色になって警告してくれます。試しにめちゃなアドレスで送信すると「てめー、スパムだな」と怒られました。w

設置例です。 8)

【出くわした問題点】

2007-2-22
IImage-browserと激しく干渉。

Warning: session_start() [function.session-start]: open(/tmp/sess_ee****e****c****bea0af*c*cad2, O_RDWR) failed: Permission denied (13)
in /virtual/…../wp-content/plugins/pxsmail.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /virtual/…../wp-content/plugins/pxsmail.php:1)
in /virtual/…../wp-content/plugins/pxsmail.php on line 1

エラーがずらずら出た。pxsmail.phpの1行目 <?php session_start(); が原因みたい。とりあえず、<?php に修正。

2007-3-19 naoさんのコメントより∼

サーバによってはメールが送れなくなるようで・・・。orz
セキュリティとの関係でIImage-Browserにエラーが出るのか? 只今、師匠に問い合わせ中です。 :wink:

以下師匠のメールから引用です。

完全にソース読めてないのですが分かること書きます。

・ご指摘の session_start ですが、WP 中で一回しか使えません。2回目使うとエラーになります。
・session_start を外すとスパム判定されうまく投稿できません。
・しかし、どっかのプラグインに書いてあるときっとうまく動きます。(この場合 Image Browser でしょうか)

基本的に session_start はプラグインで書くたぐいのものではないのでまずはハズすでOKです。 ただし、session_start がどこにもない状態でこのプラグインを動かすと投稿時にハジく仕組みになっています。(Akismet 以外にもスパム対策をいろいろしている)

スパムは Akismet とーせばおそらく大丈夫ということで、この session 使ったスパム対策をいっさいがっさいこのプラグインからはずしてしまえば、おそらくみんな幸せになります。
# でもちょっと弱くなります。

1. 先頭行の session_start を削除

2. 90行目からの以下の if を削除

if ($_POST['pxscheck'] !== $_SESSION["pxscheck"]) {
      echo $hack_redirect;
      exit();
 }

3. 187行目削除

 session_destroy();

4. 194行目削除

 $_SESSION["pxscheck"] = md5(rand());

5. 241行目からの if 削除

if (!isset($_SESSION["pxscheck"])) {
     $_SESSION["pxscheck"] = md5(rand());
 }

6. 260行目削除

<input type="hidden" name="pxscheck" value="' . $_SESSION["pxscheck"] .'" />

すいません、そらで書いているので間違っているかもしれませんがやってみてください。 nao さんの事象とちょっと話が合わないのですが、おそらくは session の不具合なので、これで直るような気もします。

お忙しいところありがとうございました、ひろまささん。
私の環境でこの処置をするとメール送信できませんでしたので、段階を踏んで対処された方がよいかと思います。

参照: CXLVII. セッション処理関数(session)

2007-3-20 naoさんのコメントより∼

件名文字化けの件は最初から悩んでました。G-mailとかはバケず、OEなんかではバケる。いろいろとやっても直らなかったので(化けるのは件名だけなので・・)放置していたのです。

今日成功したのでメモ。

46行目あたり、function pxs_callback( $content )

if (empty($_POST['your_subject'])) {
            $subject = get_option('pxs_subject');
            $subject = stripslashes($subject);
            $subject_mm = '';
            } else {
            $subject = $_POST['your_subject'];
            $subject = stripslashes($subject);
            $subject_mm =  ': '.$subject;
            }
           }

こう変更。

if (empty($_POST['your_subject'])) {
            $subject = get_option('pxs_subject');
            $subject = stripslashes($subject);
	    $subject = mb_convert_encoding($subject,"UTF-8","auto");
            $subject_mm = '';
            } else {
            $subject = $_POST['your_subject'];
            $subject = stripslashes($subject);
            $subject = mb_convert_encoding($subject,"UTF-8","auto");
            $subject_mm =  ': '.$subject;
            }
           }

一応、バケませんでした。 :o

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする