Throws SPAM Away - Version 1.2

Version Description

NG

Download this release

Release Info

Developer tsato
Plugin Icon wp plugin Throws SPAM Away
Version 1.2
Comparing to
See all releases

Code changes from version 1.1 to 1.2

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.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( __('日本語を含まない記事は投稿できませんよ。<script type="text/javascript">window.setTimeout(location.href = "'.$_SERVER['HTTP_REFERER'].'", 100);</script>', 'throws-spam-away'));
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
- $flg = false;
50
  mb_regex_encoding('UTF-8');
51
- if (preg_match('/[一-龠]+/u', $comment)){ $flg = true; }
52
- if (preg_match('/[ァ-ヶー]+/u', $comment)){ $flg = true; }
53
- if (preg_match('/[ぁ-ん]+/u', $comment)){ $flg = true; }
54
- return $flg;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ ?>