Version Description
NG
Download this release
Release Info
Developer | tsato |
Plugin | Throws SPAM Away |
Version | 1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1 to 1.2
- readme.txt +9 -5
- throws_spam_away.php +57 -6
- trunk/readme.txt +55 -0
- trunk/throws_spam_away.php +113 -0
readme.txt
CHANGED
@@ -4,12 +4,12 @@ Donate link: http://iscw.jp/
|
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
Tested up to: 3.2.1
|
7 |
-
Stable tag: 1.
|
8 |
|
9 |
-
|
10 |
|
11 |
== Description ==
|
12 |
-
|
13 |
|
14 |
== Installation ==
|
15 |
|
@@ -31,6 +31,9 @@ e.g.
|
|
31 |
|
32 |
== Changelog ==
|
33 |
|
|
|
|
|
|
|
34 |
= 1.1 =
|
35 |
マルチバイト文字が存在していても日本語文字列を含まないとNGとするよう
|
36 |
正規表現を入れて精査するように修正
|
@@ -39,6 +42,9 @@ e.g.
|
|
39 |
新規作成
|
40 |
|
41 |
== Upgrade Notice ==
|
|
|
|
|
|
|
42 |
= 1.1 =
|
43 |
正規表現を使いロシア語や他のマルチバイト文字列を使用する言語からの攻撃に対応
|
44 |
|
@@ -47,5 +53,3 @@ e.g.
|
|
47 |
== Arbitrary section ==
|
48 |
|
49 |
== A brief Markdown Example ==
|
50 |
-
|
51 |
-
`<?php code(); // goes in backticks ?>`
|
4 |
Tags: comments, spam
|
5 |
Requires at least: 3.1
|
6 |
Tested up to: 3.2.1
|
7 |
+
Stable tag: 1.2
|
8 |
|
9 |
+
コメント内に日本語文字列が一つも存在しない場合あたかも受け付けたように振る舞いながらも無視
|
10 |
|
11 |
== Description ==
|
12 |
+
コメント欄に日本語文字列が含まれていないと投稿出来ない・・・といってもエラーにするのではなく「無視」して何事もなかったようにもとの記事に戻る。
|
13 |
|
14 |
== Installation ==
|
15 |
|
31 |
|
32 |
== Changelog ==
|
33 |
|
34 |
+
= 1.2 =
|
35 |
+
設定画面を設けました。こちらで、日本語文字が何文字以上入っていないとNGかのしきい値とちらっと現れるエラー文言画面から元の記事に戻ってくる時間(ミリ秒)を設定することが出来ます。
|
36 |
+
|
37 |
= 1.1 =
|
38 |
マルチバイト文字が存在していても日本語文字列を含まないとNGとするよう
|
39 |
正規表現を入れて精査するように修正
|
42 |
新規作成
|
43 |
|
44 |
== Upgrade Notice ==
|
45 |
+
= 1.2 =
|
46 |
+
日本語が1文字でも含まれると通ってしまうのを何文字以上含まれていないといけないのかを設定出来るようにしました。
|
47 |
+
|
48 |
= 1.1 =
|
49 |
正規表現を使いロシア語や他のマルチバイト文字列を使用する言語からの攻撃に対応
|
50 |
|
53 |
== Arbitrary section ==
|
54 |
|
55 |
== A brief Markdown Example ==
|
|
|
|
throws_spam_away.php
CHANGED
@@ -11,6 +11,7 @@
|
|
11 |
class ThrowsSpamAway {
|
12 |
var $version = '1.0';
|
13 |
function ThrowsSpamAway() {
|
|
|
14 |
}
|
15 |
|
16 |
function comment_form() {
|
@@ -33,7 +34,7 @@ class ThrowsSpamAway {
|
|
33 |
if ($newThrowsSpamAway->validation($comment)) {
|
34 |
return $id;
|
35 |
}
|
36 |
-
wp_die( __('
|
37 |
}
|
38 |
|
39 |
/**
|
@@ -41,19 +42,69 @@ class ThrowsSpamAway {
|
|
41 |
* @param string $comment
|
42 |
*/
|
43 |
function validation($comment) {
|
|
|
44 |
// まずはシングルバイトだけならエラー
|
45 |
if (strlen(bin2hex($comment)) / 2 == mb_strlen($comment)) {
|
46 |
return false;
|
47 |
} else {
|
48 |
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
49 |
-
$
|
50 |
mb_regex_encoding('UTF-8');
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
|
59 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
11 |
class ThrowsSpamAway {
|
12 |
var $version = '1.0';
|
13 |
function ThrowsSpamAway() {
|
14 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
15 |
}
|
16 |
|
17 |
function comment_form() {
|
34 |
if ($newThrowsSpamAway->validation($comment)) {
|
35 |
return $id;
|
36 |
}
|
37 |
+
wp_die( __('日本語を規定文字数以上含まない記事は投稿できませんよ。<script type="text/javascript">window.setTimeout(location.href = "'.$_SERVER['HTTP_REFERER'].'", '.(get_option('back_content_second')!=null?get_option('back_content_second'):10).');</script>', 'throws-spam-away'));
|
38 |
}
|
39 |
|
40 |
/**
|
42 |
* @param string $comment
|
43 |
*/
|
44 |
function validation($comment) {
|
45 |
+
global $newThrowsSpamAway;
|
46 |
// まずはシングルバイトだけならエラー
|
47 |
if (strlen(bin2hex($comment)) / 2 == mb_strlen($comment)) {
|
48 |
return false;
|
49 |
} else {
|
50 |
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
51 |
+
$count_flg = 0;
|
52 |
mb_regex_encoding('UTF-8');
|
53 |
+
$com_split = $newThrowsSpamAway->mb_str_split($comment);
|
54 |
+
foreach ($com_split as $it) {
|
55 |
+
if (preg_match('/[一-龠]+/u', $it)){ $count_flg += 1; }
|
56 |
+
if (preg_match('/[ァ-ヶー]+/u', $it)){ $count_flg += 1; }
|
57 |
+
if (preg_match('/[ぁ-ん]+/u', $it)){ $count_flg += 1; }
|
58 |
+
}
|
59 |
+
return ((get_option('tsa_japanese_string_min_count')!= null?
|
60 |
+
intval(get_option('tsa_japanese_string_min_count')):0) < $count_flg);
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
function mb_str_split( $string ) {
|
65 |
+
return preg_split('/(?<!^)(?!$)/u', $string );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Callback admin_menu
|
70 |
+
*/
|
71 |
+
function admin_menu() {
|
72 |
+
if ( function_exists( 'add_options_page' ) AND current_user_can( 'manage_options' ) ) {
|
73 |
+
// add options page
|
74 |
+
$page = add_options_page( __( 'Throws SPAM Away', $this->domain ), __( 'Throws SPAM Away', $this->domain ),
|
75 |
+
'manage_options', __FILE__, array( $this, 'options_page' ) );
|
76 |
}
|
77 |
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Admin options page
|
81 |
+
*/
|
82 |
+
function options_page() {
|
83 |
+
?>
|
84 |
+
<div class="wrap">
|
85 |
+
<h2>Throws SPAM Away. Setting</h2>
|
86 |
+
<form method="post" action="options.php">
|
87 |
+
<?php wp_nonce_field('update-options'); ?>
|
88 |
+
<table class="form-table">
|
89 |
+
<tr valign="top">
|
90 |
+
<th scope="row">日本語文字列含有数<br />(この文字列に達していない場合無視対象となります。)</th>
|
91 |
+
<td><input type="text" name="tsa_japanese_string_min_count" value="<?php echo get_option('tsa_japanese_string_min_count'); ?>" /></td>
|
92 |
+
</tr>
|
93 |
+
<tr valign="top">
|
94 |
+
<th scope="row">元の記事に戻ってくる時間<br />(ミリ秒)</th>
|
95 |
+
<td><input type="text" name="tsa_back_content_second" value="<?php echo get_option('tsa_back_content_second');?>" /></td>
|
96 |
+
</tr>
|
97 |
+
</table>
|
98 |
+
<input type="hidden" name="action" value="update" />
|
99 |
+
<input type="hidden" name="page_options" value="tsa_japanese_string_min_count,tsa_back_content_second" />
|
100 |
+
<p class="submit">
|
101 |
+
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
102 |
+
</p>
|
103 |
+
</form>
|
104 |
+
<div class="clear"></div>
|
105 |
+
</div>
|
106 |
+
<?php
|
107 |
+
}
|
108 |
}
|
109 |
|
110 |
$newThrowsSpamAway = new ThrowsSpamAway;
|
trunk/readme.txt
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Plugin Name ===
|
2 |
+
Contributors: tsato
|
3 |
+
Donate link: http://iscw.jp/
|
4 |
+
Tags: comments, spam
|
5 |
+
Requires at least: 3.1
|
6 |
+
Tested up to: 3.2.1
|
7 |
+
Stable tag: 1.2
|
8 |
+
|
9 |
+
コメント内に日本語文字列が一つも存在しない場合あたかも受け付けたように振る舞いながらも無視
|
10 |
+
|
11 |
+
== Description ==
|
12 |
+
コメント欄に日本語文字列が含まれていないと投稿出来ない・・・といってもエラーにするのではなく「無視」して何事もなかったようにもとの記事に戻る。
|
13 |
+
|
14 |
+
== Installation ==
|
15 |
+
|
16 |
+
This section describes how to install the plugin and get it working.
|
17 |
+
|
18 |
+
e.g.
|
19 |
+
|
20 |
+
1. Upload `throws-spam-away` to the `/wp-content/plugins/` directory
|
21 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
22 |
+
|
23 |
+
== Frequently Asked Questions ==
|
24 |
+
|
25 |
+
= A question that someone might have =
|
26 |
+
|
27 |
+
= What about foo bar? =
|
28 |
+
|
29 |
+
|
30 |
+
== Screenshots ==
|
31 |
+
|
32 |
+
== Changelog ==
|
33 |
+
|
34 |
+
= 1.2 =
|
35 |
+
設定画面を設けました。こちらで、日本語文字が何文字以上入っていないとNGかのしきい値とちらっと現れるエラー文言画面から元の記事に戻ってくる時間(ミリ秒)を設定することが出来ます。
|
36 |
+
|
37 |
+
= 1.1 =
|
38 |
+
マルチバイト文字が存在していても日本語文字列を含まないとNGとするよう
|
39 |
+
正規表現を入れて精査するように修正
|
40 |
+
|
41 |
+
= 1.0 =
|
42 |
+
新規作成
|
43 |
+
|
44 |
+
== Upgrade Notice ==
|
45 |
+
= 1.2 =
|
46 |
+
日本語が1文字でも含まれると通ってしまうのを何文字以上含まれていないといけないのかを設定出来るようにしました。
|
47 |
+
|
48 |
+
= 1.1 =
|
49 |
+
正規表現を使いロシア語や他のマルチバイト文字列を使用する言語からの攻撃に対応
|
50 |
+
|
51 |
+
= 1.0 =
|
52 |
+
とりあえず作りました!
|
53 |
+
== Arbitrary section ==
|
54 |
+
|
55 |
+
== A brief Markdown Example ==
|
trunk/throws_spam_away.php
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Throws SPAM Away
|
4 |
+
Plugin URI: http://iscw.jp/wp/
|
5 |
+
Description: コメント内に日本語の記述が一つも存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
|
6 |
+
Author: 株式会社アイ・エス・シー さとう たけし
|
7 |
+
Version: 1.2
|
8 |
+
Author URI: http://iscw.jp/
|
9 |
+
*/
|
10 |
+
|
11 |
+
class ThrowsSpamAway {
|
12 |
+
var $version = '1.0';
|
13 |
+
function ThrowsSpamAway() {
|
14 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ) );
|
15 |
+
}
|
16 |
+
|
17 |
+
function comment_form() {
|
18 |
+
// 注意文言表示
|
19 |
+
echo '<div id="throwsSpamAway">';
|
20 |
+
echo '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
|
21 |
+
echo '</div>';
|
22 |
+
return true;
|
23 |
+
}
|
24 |
+
|
25 |
+
function comment_post($id) {
|
26 |
+
global $newThrowsSpamAway;
|
27 |
+
global $user_ID;
|
28 |
+
|
29 |
+
if( $user_ID ) {
|
30 |
+
return $id;
|
31 |
+
}
|
32 |
+
|
33 |
+
$comment = $_POST["comment"];
|
34 |
+
if ($newThrowsSpamAway->validation($comment)) {
|
35 |
+
return $id;
|
36 |
+
}
|
37 |
+
wp_die( __('日本語を規定文字数以上含まない記事は投稿できませんよ。<script type="text/javascript">window.setTimeout(location.href = "'.$_SERVER['HTTP_REFERER'].'", '.(get_option('back_content_second')!=null?get_option('back_content_second'):10).');</script>', 'throws-spam-away'));
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* 日本語が含まれているかチェックメソッド
|
42 |
+
* @param string $comment
|
43 |
+
*/
|
44 |
+
function validation($comment) {
|
45 |
+
global $newThrowsSpamAway;
|
46 |
+
// まずはシングルバイトだけならエラー
|
47 |
+
if (strlen(bin2hex($comment)) / 2 == mb_strlen($comment)) {
|
48 |
+
return false;
|
49 |
+
} else {
|
50 |
+
// マルチバイト文字が含まれている場合は日本語が含まれていればOK
|
51 |
+
$count_flg = 0;
|
52 |
+
mb_regex_encoding('UTF-8');
|
53 |
+
$com_split = $newThrowsSpamAway->mb_str_split($comment);
|
54 |
+
foreach ($com_split as $it) {
|
55 |
+
if (preg_match('/[一-龠]+/u', $it)){ $count_flg += 1; }
|
56 |
+
if (preg_match('/[ァ-ヶー]+/u', $it)){ $count_flg += 1; }
|
57 |
+
if (preg_match('/[ぁ-ん]+/u', $it)){ $count_flg += 1; }
|
58 |
+
}
|
59 |
+
return ((get_option('tsa_japanese_string_min_count')!= null?
|
60 |
+
intval(get_option('tsa_japanese_string_min_count')):0) < $count_flg);
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
function mb_str_split( $string ) {
|
65 |
+
return preg_split('/(?<!^)(?!$)/u', $string );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Callback admin_menu
|
70 |
+
*/
|
71 |
+
function admin_menu() {
|
72 |
+
if ( function_exists( 'add_options_page' ) AND current_user_can( 'manage_options' ) ) {
|
73 |
+
// add options page
|
74 |
+
$page = add_options_page( __( 'Throws SPAM Away', $this->domain ), __( 'Throws SPAM Away', $this->domain ),
|
75 |
+
'manage_options', __FILE__, array( $this, 'options_page' ) );
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Admin options page
|
81 |
+
*/
|
82 |
+
function options_page() {
|
83 |
+
?>
|
84 |
+
<div class="wrap">
|
85 |
+
<h2>Throws SPAM Away. Setting</h2>
|
86 |
+
<form method="post" action="options.php">
|
87 |
+
<?php wp_nonce_field('update-options'); ?>
|
88 |
+
<table class="form-table">
|
89 |
+
<tr valign="top">
|
90 |
+
<th scope="row">日本語文字列含有数<br />(この文字列に達していない場合無視対象となります。)</th>
|
91 |
+
<td><input type="text" name="tsa_japanese_string_min_count" value="<?php echo get_option('tsa_japanese_string_min_count'); ?>" /></td>
|
92 |
+
</tr>
|
93 |
+
<tr valign="top">
|
94 |
+
<th scope="row">元の記事に戻ってくる時間<br />(ミリ秒)</th>
|
95 |
+
<td><input type="text" name="tsa_back_content_second" value="<?php echo get_option('tsa_back_content_second');?>" /></td>
|
96 |
+
</tr>
|
97 |
+
</table>
|
98 |
+
<input type="hidden" name="action" value="update" />
|
99 |
+
<input type="hidden" name="page_options" value="tsa_japanese_string_min_count,tsa_back_content_second" />
|
100 |
+
<p class="submit">
|
101 |
+
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
102 |
+
</p>
|
103 |
+
</form>
|
104 |
+
<div class="clear"></div>
|
105 |
+
</div>
|
106 |
+
<?php
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
$newThrowsSpamAway = new ThrowsSpamAway;
|
111 |
+
add_action('comment_form', array(&$newThrowsSpamAway, "comment_form"), 9999);
|
112 |
+
add_action('pre_comment_on_post', array(&$newThrowsSpamAway, "comment_post"), 9999);
|
113 |
+
?>
|