Version Description
URL'http'
OFF
Download this release
Release Info
Developer | tsato |
Plugin | Throws SPAM Away |
Version | 2.2 |
Comparing to | |
See all releases |
Code changes from version 2.1.1 to 2.2
- readme.txt +20 -1
- throws_spam_away.php +147 -38
- uninstall.php +4 -0
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://gti.jp/
|
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
Tested up to: 3.5.1
|
7 |
-
Stable tag: 2.
|
8 |
|
9 |
コメントに日本語が使用されていないものや任意のIPアドレスからの投稿を無視するプラグイン
|
10 |
|
@@ -22,11 +22,18 @@ Stable tag: 2.1.1
|
|
22 |
|
23 |
日本語が一切入っていないコメントでも「NGキーワード」だけ設定したい場合を想定し
|
24 |
日本語が入っていないと許可しない設定を「オン・オフ」出来るようになっています。
|
|
|
|
|
25 |
以前にスパムとしてチェックした投稿のIPアドレス及び、任意のIPアドレスでの制御も出来るようになっています。
|
26 |
IPアドレスの指定は「,(半角カンマ)」区切りで複数入力できますが、「192.168.1.0/24」のようにIPアドレスの範囲指定も可能です。
|
27 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
28 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否対象とします。
|
29 |
|
|
|
|
|
|
|
|
|
|
|
30 |
・バージョン2.1.1 一部レンタルサーバー等の設定によってコメント投稿後エラーまたは白画面になってしまう不具合を修正
|
31 |
※確認したレンタルサーバー(さくらレンタルサーバー)※コメント欄に独自修正を行うような特殊な条件により発生する模様
|
32 |
|
@@ -69,6 +76,18 @@ e.g.
|
|
69 |
== Screenshots ==
|
70 |
|
71 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
= 2.1 =
|
73 |
IPアドレスの指定に「192.168.1.0/24」のようにIPアドレス範囲指定出来るようにしました。
|
74 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
Tested up to: 3.5.1
|
7 |
+
Stable tag: 2.2
|
8 |
|
9 |
コメントに日本語が使用されていないものや任意のIPアドレスからの投稿を無視するプラグイン
|
10 |
|
22 |
|
23 |
日本語が一切入っていないコメントでも「NGキーワード」だけ設定したい場合を想定し
|
24 |
日本語が入っていないと許可しない設定を「オン・オフ」出来るようになっています。
|
25 |
+
リンクと思わしき'http'を含んだ文字列が許容数(初期設定は3つ)を超えて包含される場合にエラーとします。
|
26 |
+
|
27 |
以前にスパムとしてチェックした投稿のIPアドレス及び、任意のIPアドレスでの制御も出来るようになっています。
|
28 |
IPアドレスの指定は「,(半角カンマ)」区切りで複数入力できますが、「192.168.1.0/24」のようにIPアドレスの範囲指定も可能です。
|
29 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
30 |
[192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否対象とします。
|
31 |
|
32 |
+
・バージョン2.2 'http'を許容数(初期設定 3)を超えて包含する場合にエラーとする機能を付けました。
|
33 |
+
導入後すぐに機能しはじめます。制限数の増減も行えます。
|
34 |
+
<strong>(注意!)不要な方は設定の変更でこの機能をOFFにしてください</strong>
|
35 |
+
※インストールしただけで最大限活用できるように初期設定値を設定いたしました。日本語スパム投稿(おもにリンクを多数掲載するもの)に対抗するための追加機能です。ご理解のほど、よろしくお願いします。
|
36 |
+
|
37 |
・バージョン2.1.1 一部レンタルサーバー等の設定によってコメント投稿後エラーまたは白画面になってしまう不具合を修正
|
38 |
※確認したレンタルサーバー(さくらレンタルサーバー)※コメント欄に独自修正を行うような特殊な条件により発生する模様
|
39 |
|
76 |
== Screenshots ==
|
77 |
|
78 |
== Changelog ==
|
79 |
+
= 2.2 =
|
80 |
+
URL文字列(単純に'http'文字列)が許容数(初期設定3つまで)を超えて包含される場合エラーとする機能を追加
|
81 |
+
制限するかどうかと許容数の設定及びエラー文言を設定可能。
|
82 |
+
|
83 |
+
<strong>(注意!)導入後すぐに機能しはじめます。不要な方は設定の変更でこの機能をOFFにしてください</strong>
|
84 |
+
※インストールしただけで最大限活用できるように初期設定値を設定いたしました。日本語スパム投稿(おもにリンクを多数掲載するもの)に対抗するための追加機能です。ご理解のほど、よろしくお願いします。
|
85 |
+
|
86 |
+
= 2.1.1 =
|
87 |
+
一部レンタルサーバー等の設定によってコメント投稿後エラーまたは白画面になってしまう不具合を修正
|
88 |
+
※確認したレンタルサーバー(さくらレンタルサーバー)※コメント欄に独自修正を行うような特殊な条件により発生する模様
|
89 |
+
これまで「comment_form」にて処理していた動作を「comment_form_after」にて処理するよう変更しました。
|
90 |
+
|
91 |
= 2.1 =
|
92 |
IPアドレスの指定に「192.168.1.0/24」のようにIPアドレス範囲指定出来るようにしました。
|
93 |
※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
|
throws_spam_away.php
CHANGED
@@ -4,23 +4,33 @@
|
|
4 |
Plugin URI: http://gti.jp/tsa/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
-
Version: 2.
|
8 |
Author URI: http://gti.jp/
|
9 |
*/
|
10 |
|
11 |
/** 初期設定 */
|
12 |
// エラー種別
|
13 |
$error_type = "";
|
|
|
|
|
14 |
// コメント欄下に表示される注意文言(初期設定)
|
15 |
$default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
|
16 |
// エラー時に表示されるエラー文言(初期設定)
|
17 |
$default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
|
|
|
|
|
18 |
// キーワードNGエラー時に表示されるエラー文言(初期設定)
|
19 |
$default_ng_key_error_msg = 'NGキーワードが含まれているため投稿できません。';
|
20 |
// 必須キーワードが含まれないエラー文言(初期設定)
|
21 |
$default_must_key_error_msg = "必須キーワードが含まれていないため投稿できません。";
|
22 |
// ブロックIPアドレスからの投稿の場合に表示されるエラー文言(初期設定)
|
23 |
$default_block_ip_address_error_msg = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
/** オプションキー */
|
25 |
// 日本語が存在しない時エラーとするかフラグ [tsa_on_flg] 1:する 2:しない
|
26 |
// 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
|
@@ -45,6 +55,10 @@ $default_block_ip_address_error_msg = "";
|
|
45 |
// [tsa_block_ip_addresses] 文字列型
|
46 |
// ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
47 |
// [tsa_block_ip_address_error_message] 文字列型
|
|
|
|
|
|
|
|
|
48 |
|
49 |
/** プロセス */
|
50 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
@@ -63,7 +77,7 @@ add_action('pre_comment_on_post', array(&$newThrowsSpamAway, "comment_post"), 1)
|
|
63 |
*/
|
64 |
class ThrowsSpamAway {
|
65 |
// version
|
66 |
-
var $version = '2.
|
67 |
|
68 |
public function __construct() {
|
69 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
@@ -82,9 +96,12 @@ class ThrowsSpamAway {
|
|
82 |
function comment_post($id) {
|
83 |
global $newThrowsSpamAway;
|
84 |
global $user_ID;
|
|
|
85 |
global $default_error_msg;
|
86 |
global $default_ng_key_error_msg;
|
87 |
global $default_must_key_error_msg;
|
|
|
|
|
88 |
global $error_type;
|
89 |
|
90 |
if( $user_ID ) {
|
@@ -104,23 +121,22 @@ class ThrowsSpamAway {
|
|
104 |
$error_msg = "";
|
105 |
switch ($error_type) {
|
106 |
case "must_word" :
|
107 |
-
$error_msg =
|
108 |
-
get_option('tsa_must_key_error_message') : $default_must_key_error_msg);
|
109 |
break;
|
110 |
case "ng_word" :
|
111 |
-
$error_msg =
|
112 |
-
get_option('tsa_ng_key_error_message') : $default_ng_key_error_msg);
|
113 |
break;
|
114 |
case "block_ip" :
|
115 |
-
$error_msg =
|
116 |
-
|
|
|
|
|
117 |
break;
|
118 |
default :
|
119 |
-
$error_msg =
|
120 |
-
get_option('tsa_error_message') : $default_error_msg);
|
121 |
}
|
122 |
// 元画面へ戻るタイム計算
|
123 |
-
$back_time =
|
124 |
// タイム値が0なら元画面へそのままリダイレクト
|
125 |
if ($back_time == 0) {
|
126 |
header("Location:".$_SERVER['HTTP_REFERER']);
|
@@ -153,7 +169,7 @@ class ThrowsSpamAway {
|
|
153 |
}
|
154 |
}
|
155 |
// IP制御 任意のIPアドレスをあればブロックする
|
156 |
-
$block_ip_addresses = get_option('tsa_block_ip_addresses');
|
157 |
if ($block_ip_addresses != NULL && $block_ip_addresses != "") {
|
158 |
$ip_list = mb_split(",", $block_ip_addresses);
|
159 |
foreach ($ip_list as $ip) {
|
@@ -202,6 +218,9 @@ class ThrowsSpamAway {
|
|
202 |
function validation($comment) {
|
203 |
global $newThrowsSpamAway;
|
204 |
global $error_type;
|
|
|
|
|
|
|
205 |
// まずはシングルバイトだけならエラー
|
206 |
if (get_option('tsa_on_flg') != "2" && strlen(bin2hex($comment)) / 2 == mb_strlen($comment)) {
|
207 |
return FALSE;
|
@@ -218,8 +237,7 @@ class ThrowsSpamAway {
|
|
218 |
if (preg_match('/[ァ-ヶー]+/u', $it)){ $count_flg += 1; }
|
219 |
if (preg_match('/[ぁ-ん]+/u', $it)){ $count_flg += 1; }
|
220 |
}
|
221 |
-
$flg = ((get_option('tsa_japanese_string_min_count')
|
222 |
-
intval(get_option('tsa_japanese_string_min_count')):0) < $count_flg);
|
223 |
if ($flg == FALSE) {
|
224 |
return FALSE;
|
225 |
}
|
@@ -238,7 +256,7 @@ class ThrowsSpamAway {
|
|
238 |
}
|
239 |
// キーワードチェック(ブラックリスト)を抜けたら必須キーワードチェックを行う
|
240 |
// キーワード文字列群 ※ブラックリストと重複するものはブラックリストのほうが優先です。
|
241 |
-
$must_keywords = get_option('tsa_must_keywords');
|
242 |
if ($must_keywords != NULL && $must_keywords != "") {
|
243 |
$keyword_list = mb_split(",", $must_keywords);
|
244 |
foreach ($keyword_list as $key) {
|
@@ -251,6 +269,17 @@ class ThrowsSpamAway {
|
|
251 |
}
|
252 |
}
|
253 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
|
255 |
return TRUE;
|
256 |
}
|
@@ -276,14 +305,53 @@ class ThrowsSpamAway {
|
|
276 |
*/
|
277 |
function options_page() {
|
278 |
global $wpdb; // WordPress DBアクセス
|
|
|
279 |
global $default_caution_msg;
|
|
|
280 |
global $default_error_msg;
|
281 |
global $default_ng_key_error_msg;
|
282 |
global $default_must_key_error_msg;
|
|
|
|
|
|
|
283 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
<div class="wrap">
|
285 |
<h2>Throws SPAM Away. Setting</h2>
|
286 |
<form method="post" action="options.php">
|
|
|
287 |
<?php wp_nonce_field('update-options'); ?>
|
288 |
<table class="form-table">
|
289 |
<tr valign="top">
|
@@ -291,7 +359,7 @@ class ThrowsSpamAway {
|
|
291 |
<td><?php
|
292 |
$chk_1 = "";
|
293 |
$chk_2 = "";
|
294 |
-
if (get_option('tsa_on_flg') == "2") {
|
295 |
$chk_2 = " checked=\"checked\"";
|
296 |
} else {
|
297 |
$chk_1 = " checked=\"checked\"";
|
@@ -304,44 +372,76 @@ class ThrowsSpamAway {
|
|
304 |
<tr valign="top">
|
305 |
<th scope="row">日本語文字列含有数<br />(この文字列に達していない場合無視対象となります。)</th>
|
306 |
<td><input type="text" name="tsa_japanese_string_min_count"
|
307 |
-
value="<?php echo get_option('tsa_japanese_string_min_count'); ?>" />
|
308 |
</td>
|
309 |
</tr>
|
310 |
<tr valign="top">
|
311 |
<th scope="row">元の記事に戻ってくる時間<br />(秒)※0の場合エラー画面表示しません。</th>
|
312 |
<td><input type="text" name="tsa_back_second"
|
313 |
-
value="<?php echo get_option('tsa_back_second');?>" /></td>
|
314 |
</tr>
|
315 |
<tr valign="top">
|
316 |
<th scope="row">コメント欄の下に表示される注意文言</th>
|
317 |
-
<td><input type="text" name="tsa_caution_message" size="
|
318 |
-
value="<?php echo get_option('tsa_caution_message');?>" /><br />(初期設定:<?php echo $default_caution_msg;?>)</td>
|
319 |
</tr>
|
320 |
<tr valign="top">
|
321 |
<th scope="row">日本語文字列規定値未満エラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
322 |
-
<td><input type="text" name="tsa_error_message" size="
|
323 |
-
value="<?php echo get_option('tsa_error_message');?>" /><br />(初期設定:<?php echo $default_error_msg;?>)</td>
|
324 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
<tr valign="top">
|
326 |
<th scope="row">その他NGキーワード<br />(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。<br />挙動は同じです。NGキーワードだけでも使用できます。)</th>
|
327 |
-
<td><input type="text" name="tsa_ng_keywords" size="
|
328 |
-
value="<?php echo get_option('tsa_ng_keywords');?>" /></td>
|
329 |
</tr>
|
330 |
<tr valign="top">
|
331 |
<th scope="row">NGキーワードエラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
332 |
-
<td><input type="text" name="tsa_ng_key_error_message" size="
|
333 |
-
value="<?php echo get_option('tsa_ng_key_error_message');?>" /><br />(初期設定:<?php echo $default_ng_key_error_msg;?>)</td>
|
334 |
</tr>
|
335 |
<tr valign="top">
|
336 |
<th scope="row">その上での必須キーワード<br />(日本語でも英語(その他)でも必須としたいキーワードを半角カンマ区切りで複数設定できます。<br />指定文字列を含まない場合はエラーとなります。※複数の方が厳しくなります。<br />必須キーワードだけでも使用できます。)</th>
|
337 |
-
<td><input type="text" name="tsa_must_keywords" size="
|
338 |
-
value="<?php echo get_option('tsa_must_keywords');?>" /></td>
|
339 |
</tr>
|
340 |
<tr valign="top">
|
341 |
<th scope="row">必須キーワードエラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
342 |
-
<td><input type="text" name="tsa_must_key_error_message" size="
|
343 |
-
value="<?php echo get_option('tsa_must_key_error_message');?>" /><br />(初期設定:<?php echo $default_must_key_error_msg;?>)</td>
|
344 |
</tr>
|
|
|
|
|
|
|
345 |
<tr valign="top">
|
346 |
<th scope="row">上記設定をトラックバック記事にも採用する</th>
|
347 |
<td><?php
|
@@ -372,11 +472,14 @@ class ThrowsSpamAway {
|
|
372 |
<label><input type="radio" name="tsa_tb_url_flg" value="2"<?php echo $chk_2;?>/> しない</label>
|
373 |
</td>
|
374 |
</tr>
|
|
|
|
|
|
|
375 |
<tr valign="top">
|
376 |
<th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
|
377 |
<td><?php
|
378 |
$chk = "";
|
379 |
-
if (get_option('tsa_ip_block_from_spam_chk_flg') == "1") {
|
380 |
$chk = "checked=\"checked\"";
|
381 |
} else {
|
382 |
$chk = "";
|
@@ -387,26 +490,32 @@ class ThrowsSpamAway {
|
|
387 |
// wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
|
388 |
$results = $wpdb->get_results("SELECT DISTINCT comment_author_IP FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC ");
|
389 |
?>現在「spam」フラグが付いているIPアドレス:<?php
|
|
|
390 |
foreach ($results as $item) {
|
|
|
391 |
// ブロックしたいIP
|
392 |
-
|
|
|
|
|
|
|
|
|
393 |
}
|
394 |
-
?>
|
395 |
</td>
|
396 |
</tr>
|
397 |
<tr valign="top">
|
398 |
<th scope="row">任意のIPアドレスからの投稿も無視したい場合、対象となるIPアドレスを記述してください。<br />カンマ区切りで複数設定できます。(半角数字とドットのみ)</th>
|
399 |
-
<td><input type="text" name="tsa_block_ip_addresses" size="
|
400 |
-
value="<?php echo get_option('tsa_block_ip_addresses');?>" /></td>
|
401 |
</tr>
|
402 |
<tr valign="top">
|
403 |
<th scope="row">ブロック対象のIPアドレスからの投稿時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
404 |
-
<td><input type="text" name="tsa_block_ip_address_error_message" size="
|
405 |
-
value="<?php echo get_option('tsa_block_ip_address_error_message');?>" /><br />(初期設定:<?php echo $default_block_ip_address_error_msg; ?>)</td>
|
406 |
</table>
|
407 |
<input type="hidden" name="action" value="update" /> <input
|
408 |
type="hidden" name="page_options"
|
409 |
-
value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_error_message,tsa_ng_keywords,tsa_ng_key_error_message,tsa_must_keywords,tsa_must_key_error_message,tsa_tb_on_flg,tsa_tb_url_flg,tsa_block_ip_addresses,tsa_ip_block_from_spam_chk_flg,tsa_block_ip_address_error_message" />
|
410 |
<p class="submit">
|
411 |
<input type="submit" class="button-primary"
|
412 |
value="<?php _e('Save Changes') ?>" />
|
4 |
Plugin URI: http://gti.jp/tsa/
|
5 |
Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
Author: 株式会社ジーティーアイ さとう たけし
|
7 |
+
Version: 2.2
|
8 |
Author URI: http://gti.jp/
|
9 |
*/
|
10 |
|
11 |
/** 初期設定 */
|
12 |
// エラー種別
|
13 |
$error_type = "";
|
14 |
+
// 日本語文字最小含有数
|
15 |
+
$default_japanese_string_min_count = 3;
|
16 |
// コメント欄下に表示される注意文言(初期設定)
|
17 |
$default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
|
18 |
// エラー時に表示されるエラー文言(初期設定)
|
19 |
$default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
|
20 |
+
// 元画面に戻る時間
|
21 |
+
$default_back_second = 0;
|
22 |
// キーワードNGエラー時に表示されるエラー文言(初期設定)
|
23 |
$default_ng_key_error_msg = 'NGキーワードが含まれているため投稿できません。';
|
24 |
// 必須キーワードが含まれないエラー文言(初期設定)
|
25 |
$default_must_key_error_msg = "必須キーワードが含まれていないため投稿できません。";
|
26 |
// ブロックIPアドレスからの投稿の場合に表示されるエラー文言(初期設定)
|
27 |
$default_block_ip_address_error_msg = "";
|
28 |
+
// URL数制限値オーバーのエラー文言(初期設定)
|
29 |
+
$default_url_count_over_error_msg = "";
|
30 |
+
// URL数の制限をするか
|
31 |
+
$default_url_count_check_flg = "1"; // 1:する
|
32 |
+
// URL数の制限数
|
33 |
+
$default_ok_url_count = 3; // 3つまで許容
|
34 |
/** オプションキー */
|
35 |
// 日本語が存在しない時エラーとするかフラグ [tsa_on_flg] 1:する 2:しない
|
36 |
// 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
|
55 |
// [tsa_block_ip_addresses] 文字列型
|
56 |
// ブロック対象IPアドレスからの投稿時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
57 |
// [tsa_block_ip_address_error_message] 文字列型
|
58 |
+
// URL(単純に'http'文字列のチェックのみ)文字列数を制限するか [tsa_url_count_on_flg] 1:する その他:しない
|
59 |
+
// URL(単純に'http'文字列のチェックのみ)文字列の許容数 [tsa_ok_url_count] 数値型
|
60 |
+
// URL(単純に'http'文字列のチェックのみ)文字列許容数オーバー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
|
61 |
+
// [tsa_url_count_over_error_message] 文字列型
|
62 |
|
63 |
/** プロセス */
|
64 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
77 |
*/
|
78 |
class ThrowsSpamAway {
|
79 |
// version
|
80 |
+
var $version = '2.2';
|
81 |
|
82 |
public function __construct() {
|
83 |
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
96 |
function comment_post($id) {
|
97 |
global $newThrowsSpamAway;
|
98 |
global $user_ID;
|
99 |
+
global $default_back_second;
|
100 |
global $default_error_msg;
|
101 |
global $default_ng_key_error_msg;
|
102 |
global $default_must_key_error_msg;
|
103 |
+
global $default_block_ip_address_error_msg;
|
104 |
+
global $default_url_count_over_error_msg;
|
105 |
global $error_type;
|
106 |
|
107 |
if( $user_ID ) {
|
121 |
$error_msg = "";
|
122 |
switch ($error_type) {
|
123 |
case "must_word" :
|
124 |
+
$error_msg = get_option('tsa_must_key_error_message', $default_must_key_error_msg);
|
|
|
125 |
break;
|
126 |
case "ng_word" :
|
127 |
+
$error_msg = get_option('tsa_ng_key_error_message', $default_ng_key_error_msg);
|
|
|
128 |
break;
|
129 |
case "block_ip" :
|
130 |
+
$error_msg = get_option('tsa_block_ip_address_error_message', $default_block_ip_address_error_msg);
|
131 |
+
break;
|
132 |
+
case "url_count_over" :
|
133 |
+
$error_msg = get_option('tsa_url_count_over_error_message', $default_url_count_over_error_msg);
|
134 |
break;
|
135 |
default :
|
136 |
+
$error_msg = get_option('tsa_error_message', $default_error_msg);
|
|
|
137 |
}
|
138 |
// 元画面へ戻るタイム計算
|
139 |
+
$back_time = ((int)get_option('tsa_back_second', $default_back_second)) * 1000;
|
140 |
// タイム値が0なら元画面へそのままリダイレクト
|
141 |
if ($back_time == 0) {
|
142 |
header("Location:".$_SERVER['HTTP_REFERER']);
|
169 |
}
|
170 |
}
|
171 |
// IP制御 任意のIPアドレスをあればブロックする
|
172 |
+
$block_ip_addresses = get_option('tsa_block_ip_addresses', "");
|
173 |
if ($block_ip_addresses != NULL && $block_ip_addresses != "") {
|
174 |
$ip_list = mb_split(",", $block_ip_addresses);
|
175 |
foreach ($ip_list as $ip) {
|
218 |
function validation($comment) {
|
219 |
global $newThrowsSpamAway;
|
220 |
global $error_type;
|
221 |
+
global $default_url_count_check_flg; // URL数を制御するか初期設定値
|
222 |
+
global $default_ok_url_count; // 制限する場合のURL数初期設定値
|
223 |
+
global $default_japanese_string_min_count; // 日本語文字最小含有数
|
224 |
// まずはシングルバイトだけならエラー
|
225 |
if (get_option('tsa_on_flg') != "2" && strlen(bin2hex($comment)) / 2 == mb_strlen($comment)) {
|
226 |
return FALSE;
|
237 |
if (preg_match('/[ァ-ヶー]+/u', $it)){ $count_flg += 1; }
|
238 |
if (preg_match('/[ぁ-ん]+/u', $it)){ $count_flg += 1; }
|
239 |
}
|
240 |
+
$flg = (intval(get_option('tsa_japanese_string_min_count', $default_japanese_string_min_count)) < $count_flg);
|
|
|
241 |
if ($flg == FALSE) {
|
242 |
return FALSE;
|
243 |
}
|
256 |
}
|
257 |
// キーワードチェック(ブラックリスト)を抜けたら必須キーワードチェックを行う
|
258 |
// キーワード文字列群 ※ブラックリストと重複するものはブラックリストのほうが優先です。
|
259 |
+
$must_keywords = get_option('tsa_must_keywords', "");
|
260 |
if ($must_keywords != NULL && $must_keywords != "") {
|
261 |
$keyword_list = mb_split(",", $must_keywords);
|
262 |
foreach ($keyword_list as $key) {
|
269 |
}
|
270 |
}
|
271 |
}
|
272 |
+
// URL数チェック
|
273 |
+
$url_count_check = get_option('tsa_url_count_on_flg', $default_url_count_check_flg);
|
274 |
+
// 許容URL数設定値
|
275 |
+
$ok_url_count = intval(get_option('tsa_ok_url_count', $default_ok_url_count)); // デフォルト値3(3つまで許容)
|
276 |
+
if ( $url_count_check != "2" ) {
|
277 |
+
if ( substr_count( strtolower( $comment ), 'http') > $ok_url_count) {
|
278 |
+
// URL文字列(httpの数)が多いエラー
|
279 |
+
$error_type = "url_count_over";
|
280 |
+
return FALSE;
|
281 |
+
}
|
282 |
+
}
|
283 |
|
284 |
return TRUE;
|
285 |
}
|
305 |
*/
|
306 |
function options_page() {
|
307 |
global $wpdb; // WordPress DBアクセス
|
308 |
+
global $default_japanese_string_min_count;
|
309 |
global $default_caution_msg;
|
310 |
+
global $default_back_second;
|
311 |
global $default_error_msg;
|
312 |
global $default_ng_key_error_msg;
|
313 |
global $default_must_key_error_msg;
|
314 |
+
global $default_block_ip_address_error_msg;
|
315 |
+
global $default_url_count_over_error_msg;
|
316 |
+
global $default_ok_url_count;
|
317 |
?>
|
318 |
+
<style>
|
319 |
+
table.form-table { }
|
320 |
+
table.form-table th {
|
321 |
+
width : 200px;
|
322 |
+
}
|
323 |
+
</style>
|
324 |
+
<script type="text/Javascript">
|
325 |
+
// 配列重複チェック
|
326 |
+
var isDuplicate = function(ary, str) {
|
327 |
+
for (i = 0; i < ary.length; i++) {
|
328 |
+
if(str == ary[i]) {
|
329 |
+
return true;
|
330 |
+
}
|
331 |
+
}
|
332 |
+
return false;
|
333 |
+
};
|
334 |
+
function addIpAddresses(newAddressStr) {
|
335 |
+
var str = document.getElementById('tsa_block_ip_addresses').value;
|
336 |
+
if (str.length > 0) { str += ","; }
|
337 |
+
str += newAddressStr;
|
338 |
+
var ary = str.split(",");
|
339 |
+
var newAry = new Array;
|
340 |
+
var ret = "";
|
341 |
+
|
342 |
+
for( var i=0 ; i < ary.length ; i++ ) {
|
343 |
+
if( !isDuplicate(newAry, ary[i]) ){
|
344 |
+
newAry.push(ary[i]);
|
345 |
+
}
|
346 |
+
}
|
347 |
+
document.getElementById('tsa_block_ip_addresses').value = newAry.join(',');
|
348 |
+
return false;
|
349 |
+
}
|
350 |
+
</script>
|
351 |
<div class="wrap">
|
352 |
<h2>Throws SPAM Away. Setting</h2>
|
353 |
<form method="post" action="options.php">
|
354 |
+
<h3>スパム対策機能 設定</h3>
|
355 |
<?php wp_nonce_field('update-options'); ?>
|
356 |
<table class="form-table">
|
357 |
<tr valign="top">
|
359 |
<td><?php
|
360 |
$chk_1 = "";
|
361 |
$chk_2 = "";
|
362 |
+
if (get_option('tsa_on_flg', "1") == "2") {
|
363 |
$chk_2 = " checked=\"checked\"";
|
364 |
} else {
|
365 |
$chk_1 = " checked=\"checked\"";
|
372 |
<tr valign="top">
|
373 |
<th scope="row">日本語文字列含有数<br />(この文字列に達していない場合無視対象となります。)</th>
|
374 |
<td><input type="text" name="tsa_japanese_string_min_count"
|
375 |
+
value="<?php echo get_option('tsa_japanese_string_min_count', $default_japanese_string_min_count); ?>" />
|
376 |
</td>
|
377 |
</tr>
|
378 |
<tr valign="top">
|
379 |
<th scope="row">元の記事に戻ってくる時間<br />(秒)※0の場合エラー画面表示しません。</th>
|
380 |
<td><input type="text" name="tsa_back_second"
|
381 |
+
value="<?php echo get_option('tsa_back_second', $default_back_second);?>" /></td>
|
382 |
</tr>
|
383 |
<tr valign="top">
|
384 |
<th scope="row">コメント欄の下に表示される注意文言</th>
|
385 |
+
<td><input type="text" name="tsa_caution_message" size="80"
|
386 |
+
value="<?php echo get_option('tsa_caution_message', $default_caution_msg);?>" /><br />(初期設定:<?php echo $default_caution_msg;?>)</td>
|
387 |
</tr>
|
388 |
<tr valign="top">
|
389 |
<th scope="row">日本語文字列規定値未満エラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
390 |
+
<td><input type="text" name="tsa_error_message" size="80"
|
391 |
+
value="<?php echo get_option('tsa_error_message', $default_error_msg);?>" /><br />(初期設定:<?php echo $default_error_msg;?>)</td>
|
392 |
</tr>
|
393 |
+
</table>
|
394 |
+
<h3>URL文字列除外 設定</h3>
|
395 |
+
<table class="form-table">
|
396 |
+
<tr valign="top">
|
397 |
+
<th scope="row">URLらしき文字列が混入している場合エラーとするか</th>
|
398 |
+
<td><?php
|
399 |
+
$chk_1 = "";
|
400 |
+
$chk_2 = "";
|
401 |
+
if (get_option('tsa_url_count_on_flg', "1") == "2") {
|
402 |
+
$chk_2 = " checked=\"checked\"";
|
403 |
+
} else {
|
404 |
+
$chk_1 = " checked=\"checked\"";
|
405 |
+
}
|
406 |
+
?>
|
407 |
+
<label><input type="radio" name="tsa_url_count_on_flg" value="1"<?php echo $chk_1;?>/> する</label>
|
408 |
+
<label><input type="radio" name="tsa_url_count_on_flg" value="2"<?php echo $chk_2;?>/> しない</label><br />
|
409 |
+
する場合の制限数(入力数値まで許容):<input type="text" name="tsa_ok_url_count" size="2"
|
410 |
+
value="<?php echo get_option('tsa_ok_url_count', $default_ok_url_count);?>" />
|
411 |
+
</td>
|
412 |
+
</tr>
|
413 |
+
<tr valign="top">
|
414 |
+
<th scope="row">URLらしき文字列混入数オーバーエラー時に表示される文言
|
415 |
+
(元の記事に戻ってくる時間の間のみ表示)</th>
|
416 |
+
<td><input type="text" name="tsa_url_count_over_error_message" size="80"
|
417 |
+
value="<?php echo get_option('tsa_url_count_over_error_message', $default_url_count_over_error_msg);?>" /><br />(初期設定:<?php echo $default_url_count_over_error_msg;?>)</td>
|
418 |
+
</tr>
|
419 |
+
</table>
|
420 |
+
<h3>NGキーワード / 必須キーワード 制御設定</h3>
|
421 |
+
<table class="form-table">
|
422 |
<tr valign="top">
|
423 |
<th scope="row">その他NGキーワード<br />(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。<br />挙動は同じです。NGキーワードだけでも使用できます。)</th>
|
424 |
+
<td><input type="text" name="tsa_ng_keywords" size="80"
|
425 |
+
value="<?php echo get_option('tsa_ng_keywords', "");?>" /></td>
|
426 |
</tr>
|
427 |
<tr valign="top">
|
428 |
<th scope="row">NGキーワードエラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
429 |
+
<td><input type="text" name="tsa_ng_key_error_message" size="80"
|
430 |
+
value="<?php echo get_option('tsa_ng_key_error_message', $default_ng_key_error_msg);?>" /><br />(初期設定:<?php echo $default_ng_key_error_msg;?>)</td>
|
431 |
</tr>
|
432 |
<tr valign="top">
|
433 |
<th scope="row">その上での必須キーワード<br />(日本語でも英語(その他)でも必須としたいキーワードを半角カンマ区切りで複数設定できます。<br />指定文字列を含まない場合はエラーとなります。※複数の方が厳しくなります。<br />必須キーワードだけでも使用できます。)</th>
|
434 |
+
<td><input type="text" name="tsa_must_keywords" size="80"
|
435 |
+
value="<?php echo get_option('tsa_must_keywords', "");?>" /></td>
|
436 |
</tr>
|
437 |
<tr valign="top">
|
438 |
<th scope="row">必須キーワードエラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
439 |
+
<td><input type="text" name="tsa_must_key_error_message" size="80"
|
440 |
+
value="<?php echo get_option('tsa_must_key_error_message', $default_must_key_error_msg);?>" /><br />(初期設定:<?php echo $default_must_key_error_msg;?>)</td>
|
441 |
</tr>
|
442 |
+
</table>
|
443 |
+
<h3>トラックバックへの対応設定</h3>
|
444 |
+
<table class="form-table">
|
445 |
<tr valign="top">
|
446 |
<th scope="row">上記設定をトラックバック記事にも採用する</th>
|
447 |
<td><?php
|
472 |
<label><input type="radio" name="tsa_tb_url_flg" value="2"<?php echo $chk_2;?>/> しない</label>
|
473 |
</td>
|
474 |
</tr>
|
475 |
+
</table>
|
476 |
+
<h3>投稿IPアドレスによる制御設定</h3>
|
477 |
+
<table class="form-table">
|
478 |
<tr valign="top">
|
479 |
<th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
|
480 |
<td><?php
|
481 |
$chk = "";
|
482 |
+
if (get_option('tsa_ip_block_from_spam_chk_flg', "") == "1") {
|
483 |
$chk = "checked=\"checked\"";
|
484 |
} else {
|
485 |
$chk = "";
|
490 |
// wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
|
491 |
$results = $wpdb->get_results("SELECT DISTINCT comment_author_IP FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC ");
|
492 |
?>現在「spam」フラグが付いているIPアドレス:<?php
|
493 |
+
$add_ip_addresses = "";
|
494 |
foreach ($results as $item) {
|
495 |
+
$spam_ip = $item->comment_author_IP;
|
496 |
// ブロックしたいIP
|
497 |
+
if ( strlen( $add_ip_addresses ) > 0 ) {
|
498 |
+
$add_ip_addresses .= ",";
|
499 |
+
}
|
500 |
+
$add_ip_addresses .= $spam_ip;
|
501 |
+
?><b><?php echo $spam_ip; ?></b><br /><?php
|
502 |
}
|
503 |
+
?> <input type="button" onclick="javascript:addIpAddresses('<?php echo $add_ip_addresses; ?>');" value="これらのIPアドレスを任意のブロック対象IPアドレスにコピーする" />
|
504 |
</td>
|
505 |
</tr>
|
506 |
<tr valign="top">
|
507 |
<th scope="row">任意のIPアドレスからの投稿も無視したい場合、対象となるIPアドレスを記述してください。<br />カンマ区切りで複数設定できます。(半角数字とドットのみ)</th>
|
508 |
+
<td><input type="text" name="tsa_block_ip_addresses" id="tsa_block_ip_addresses" size="80"
|
509 |
+
value="<?php echo get_option('tsa_block_ip_addresses', "");?>" /></td>
|
510 |
</tr>
|
511 |
<tr valign="top">
|
512 |
<th scope="row">ブロック対象のIPアドレスからの投稿時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
|
513 |
+
<td><input type="text" name="tsa_block_ip_address_error_message" size="80"
|
514 |
+
value="<?php echo get_option('tsa_block_ip_address_error_message', $default_block_ip_address_error_msg);?>" /><br />(初期設定:<?php echo $default_block_ip_address_error_msg; ?>)</td>
|
515 |
</table>
|
516 |
<input type="hidden" name="action" value="update" /> <input
|
517 |
type="hidden" name="page_options"
|
518 |
+
value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_error_message,tsa_ng_keywords,tsa_ng_key_error_message,tsa_must_keywords,tsa_must_key_error_message,tsa_tb_on_flg,tsa_tb_url_flg,tsa_block_ip_addresses,tsa_ip_block_from_spam_chk_flg,tsa_block_ip_address_error_message,tsa_url_count_on_flg,tsa_ok_url_count,tsa_url_count_over_error_message" />
|
519 |
<p class="submit">
|
520 |
<input type="submit" class="button-primary"
|
521 |
value="<?php _e('Save Changes') ?>" />
|
uninstall.php
CHANGED
@@ -21,4 +21,8 @@ delete_option('tsa_tb_url_flg');
|
|
21 |
delete_option('tsa_ip_block_from_spam_chk_flg');
|
22 |
delete_option('tsa_block_ip_addresses');
|
23 |
delete_option('tsa_block_ip_address_error_message');
|
|
|
|
|
|
|
|
|
24 |
?>
|
21 |
delete_option('tsa_ip_block_from_spam_chk_flg');
|
22 |
delete_option('tsa_block_ip_addresses');
|
23 |
delete_option('tsa_block_ip_address_error_message');
|
24 |
+
// ver.2.2
|
25 |
+
delete_option('tsa_url_count_on_flg');
|
26 |
+
delete_option('tsa_ok_url_count');
|
27 |
+
delete_option('tsa_url_count_over_error_message');
|
28 |
?>
|