Throws SPAM Away - Version 2.5.1

Version Description

= 2.0 = IP IP

= 1.4 =

NG

= 1.3 =

= 1.2.1 =

= 1.2 = 1

= 1.1 =

= 1.0 =

Download this release

Release Info

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

Code changes from version 2.5 to 2.5.1

Files changed (4) hide show
  1. readme.txt +22 -3
  2. throws_spam_away.class.php +74 -125
  3. throws_spam_away.php +16 -6
  4. uninstall.php +7 -0
readme.txt CHANGED
@@ -3,15 +3,15 @@ Contributors: taman777
3
  Donate link: http://gti.jp/
4
  Tags: comments, spam
5
  Requires at least: 3.1
6
- Tested up to: 3.5.2
7
- Stable tag: 2.5
8
 
9
  コメントに日本語が使用されていないものや任意のIPアドレスからの投稿を無視するプラグイン
10
 
11
  == Description ==
12
  海外からのコメントスパムに対抗(?)する手段として開発したプラグインです。
13
 
14
- コメント欄に日本語文字列が含まれていないと投稿出来ない・・・
15
  といってもエラーにするのではなく「無視」して何事もなかったようにもとの記事に戻ります。
16
 
17
  ダブルバイトをカウントするのではなく正規表現により日本語を検出しているため、ダブルバイトの他言語も侵入してきません。
@@ -43,6 +43,15 @@ IPアドレスの指定「ブロックリスト」「ホワイトリスト」共
43
  ※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
44
   [192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
45
 
 
 
 
 
 
 
 
 
 
46
  ・バージョン2.5
47
   「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます!スパムちゃんぷるーでスパム判定する機能です。
48
   「IPアドレス ホワイトリスト」を導入しました。ホワイトリストに登録されたIPアドレスからの投稿はノーチェックで投稿完了されます。
@@ -140,6 +149,16 @@ e.g.
140
  == Screenshots ==
141
 
142
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
143
  = 2.4 =
144
  制御IPアドレスの入力方式を「カンマ区切り」から「改行」へ変更しました。
145
  従来のデータ(カンマ区切り)は自動的に改行区切りに変更されます。
3
  Donate link: http://gti.jp/
4
  Tags: comments, spam
5
  Requires at least: 3.1
6
+ Tested up to: 3.6.1
7
+ Stable tag: 2.5.1
8
 
9
  コメントに日本語が使用されていないものや任意のIPアドレスからの投稿を無視するプラグイン
10
 
11
  == Description ==
12
  海外からのコメントスパムに対抗(?)する手段として開発したプラグインです。
13
 
14
+ コメント欄に日本語文字列が含まれていないと投稿出来ない・・・(その他設定可能です。)
15
  といってもエラーにするのではなく「無視」して何事もなかったようにもとの記事に戻ります。
16
 
17
  ダブルバイトをカウントするのではなく正規表現により日本語を検出しているため、ダブルバイトの他言語も侵入してきません。
43
  ※例:192.168.0.1,192.168.1.0/24,69.208.0.0/16 と指定した場合
44
   [192.168.0.1]と[192.168.1.0 ~ 192.168.1.255]と[69.208.0.0 ~ 69.208.255.255]のIPアドレスを拒否(または優先通過)対象とします。
45
 
46
+ ・バージョン2.5.1
47
+  「日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)」の文言表示する際の表示位置をフォーム内部の「送信」ボタン上かフォームの下に設置出来るように変更。
48
+  この文言は前のバージョンまでは
49
+  「 <div id="throwsSpamAway">日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)</div>」
50
+  と表示されるようにしておりましたが、この「div」タグを「p」タグに変更。
51
+  また、「コメント欄の下に表示される注意文言」を空白にした場合はタグ自体が挿入されないようにしました。
52
+  どうしても崩れてしまう方は注意文言を空白にして更新するようお願いいたします。
53
+  ※WordPress3.6以降のWordPressテーマ「Twenty Thirteen」で表示が崩れる事象が起きているための対策です。ご迷惑をお掛けしました。大変申し訳ありません。
54
+
55
  ・バージョン2.5
56
   「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます!スパムちゃんぷるーでスパム判定する機能です。
57
   「IPアドレス ホワイトリスト」を導入しました。ホワイトリストに登録されたIPアドレスからの投稿はノーチェックで投稿完了されます。
149
  == Screenshots ==
150
 
151
  == Changelog ==
152
+ = 2.5 =
153
+ ・「スパムちゃんぷるー(ベータ)」http://spam-champuru.livedoor.com/dnsbl/ を利用出来ます。
154
+   スパムちゃんぷるーでスパム判定する機能です。
155
+ ・「IPアドレス ホワイトリスト」を導入しました。
156
+   ホワイトリストに登録されたIPアドレスからの投稿はノーチェックで投稿完了されます。
157
+   ※ホワイトリストが一番強力にしてありますので、このIPアドレスがAkismetで捉えられていてもスパムちゃんぷるーでスパム扱いになったとしても優先で通過させます。
158
+ ・スパムデータベースの表示期間を指定するようにしました。また表示期間を過ぎたデータを削除することも出来るようにしました。
159
+ ・テストでスパム投稿したIPアドレスなどをスパムデータベースから削除する機能を付けました。
160
+ ・スパム投稿データに「スパムちゃんぷるー」の結果も付加しました。
161
+
162
  = 2.4 =
163
  制御IPアドレスの入力方式を「カンマ区切り」から「改行」へ変更しました。
164
  従来のデータ(カンマ区切り)は自動的に改行区切りに変更されます。
throws_spam_away.class.php CHANGED
@@ -9,29 +9,17 @@
9
  class ThrowsSpamAway {
10
 
11
  // version
12
- var $version = '2.5';
13
  var $table_name = "";
14
 
15
  public function __construct($flg = FALSE) {
16
  global $default_spam_data_save;
17
- global $wpdb;
18
- // 接頭辞(wp_)を付けてテーブル名を設定
19
- $this->table_name = $wpdb->prefix . 'tsa_spam';
20
  if ($flg == FALSE) {
21
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
22
- global $default_spam_keep_day_count;
23
- global $lower_spam_keep_day_count;
24
-
25
- // 保存期間終了したデータ削除
26
- $skdc = intval( get_option('tsa_spam_keep_day_count', $default_spam_keep_day_count) );
27
- if ( $skdc < $lower_spam_keep_day_count ) { $skdc = $lower_spam_keep_day_count; }
28
- if ( get_option('tsa_spam_data_delete_flg', "") == "1" ) {
29
- // 期間 get_option('tsa_spam_keep_day_count') 日
30
- $wpdb->query(
31
- "DELETE FROM ".$this->table_name." WHERE post_date < '".gmdate('Y-m-d 23:59:59', current_time('timestamp')-86400 * $skdc)."'"
32
- );
33
- }
34
  }
 
 
 
35
  }
36
 
37
  /**
@@ -82,7 +70,16 @@ class ThrowsSpamAway {
82
  if ( get_option('tsa_spam_data_save', $default_spam_data_save) != "1" ) return;
83
 
84
  global $wpdb;
 
85
 
 
 
 
 
 
 
 
 
86
  //保存するために配列にする
87
  $set_arr = array(
88
  'post_id' => $post_id,
@@ -99,7 +96,10 @@ class ThrowsSpamAway {
99
  global $default_caution_msg;
100
  // 注意文言表示
101
  $caution_msg = get_option( 'tsa_caution_message', $default_caution_msg );
102
- echo '<div id="throwsSpamAway">'.$caution_msg.'</div>';
 
 
 
103
  return TRUE;
104
  }
105
 
@@ -115,38 +115,14 @@ class ThrowsSpamAway {
115
  global $default_spam_limit_over_interval_error_msg;
116
  global $error_type;
117
 
118
- // ログインしている場合は通過させます。
119
  if( $user_ID ) {
120
  return $id;
121
  }
122
  // コメント(comment)及び名前(author)の中も検査
123
  $author = $_POST["author"];
124
  $comment = $_POST["comment"];
125
-
126
- // チェック対象IPアドレス
127
- $ip = $_SERVER['REMOTE_ADDR'];
128
-
129
- // ホワイトリスト優先通過
130
- // IP制御 任意のIPアドレスをあればブロックする
131
- $white_ip_addresses = get_option( 'tsa_white_ip_addresses', "" );
132
- if ( $white_ip_addresses != NULL && $white_ip_addresses != "" ) {
133
- // 改行区切りの場合はカンマ区切りに文字列置換後リスト化
134
- $white_ip_addresses = str_replace("\n", ",", $white_ip_addresses);
135
- $ip_list = mb_split( ",", $white_ip_addresses );
136
- foreach ( $ip_list as $_ip ) {
137
- // 指定IPが範囲指定の場合 例:192.168.1.0/24
138
- if ( strpos( $_ip, "/" ) != FALSE ) {
139
- if ( $this->inCIDR( $ip, $_ip ) ) {
140
- // 通過対象
141
- return $id;
142
- }
143
- } elseif ( trim( $_ip ) == trim( $ip ) ) {
144
- // 通過対象
145
- return $id;
146
- }
147
- }
148
- }
149
  // IP系の検査
 
150
  if ( !$newThrowsSpamAway->ip_check( $ip ) ) {
151
  // アウト!
152
  } else
@@ -467,6 +443,7 @@ class ThrowsSpamAway {
467
  global $wpdb; // WordPress DBアクセス
468
  global $default_japanese_string_min_count;
469
  global $default_caution_msg;
 
470
  global $default_back_second;
471
  global $default_error_msg;
472
  global $default_ng_key_error_msg;
@@ -481,25 +458,10 @@ class ThrowsSpamAway {
481
  global $default_spam_limit_over_interval;
482
  global $default_spam_limit_over_interval_error_msg;
483
 
484
- global $default_spam_display_day_count;
485
-
486
  global $default_spam_keep_day_count;
487
 
488
  // 設定完了の場合はメッセージ表示
489
  $_saved = FALSE;
490
- // スパム情報から 特定IPアドレス削除
491
- if ( $_POST['act'] != NULL && $_POST['act'] == "remove_ip" ) {
492
- $remove_ip_address = @htmlspecialchars($_POST['ip_address']);
493
- if ( !isset($remove_ip_address) || strlen($remove_ip_address) == 0 ) {
494
- // N/A
495
- } else {
496
- // スパムデータベースから特定IP情報削除
497
- $wpdb->query(
498
- "DELETE FROM ".$this->table_name." WHERE ip_address = '".$remove_ip_address."' "
499
- );
500
- $_saved = TRUE;
501
- }
502
- }
503
  if ( $_GET['settings-updated'] == "true" ) {
504
  $_saved = TRUE;
505
  }
@@ -564,14 +526,6 @@ function addIpAddresses(newAddressStr) {
564
  }
565
  return false;
566
  }
567
- function removeIpAddressOnData(ipAddressStr) {
568
- if (confirm('['+ipAddressStr+'] をスパムデータベースから削除します。よろしいですか?この操作は取り消せません')) {
569
- jQuery('#remove_ip_address').val(ipAddressStr);
570
- jQuery('#remove').submit();
571
- } else {
572
- return false;
573
- }
574
- }
575
  </script>
576
  <div class="wrap">
577
  <h2>Throws SPAM Away設定</h2>
@@ -583,7 +537,7 @@ function removeIpAddressOnData(ipAddressStr) {
583
  <?php wp_nonce_field('update-options'); ?>
584
  <table class="form-table">
585
  <tr valign="top">
586
- <th scope="row">日本語が存在しない場合、無視対象とする<br />(日本語文字列が存在しない場合無視対象となります。)
587
  </th>
588
  <td><?php
589
  $chk_1 = "";
@@ -613,13 +567,30 @@ function removeIpAddressOnData(ipAddressStr) {
613
  </td>
614
  </tr>
615
  <tr valign="top">
616
- <th scope="row">コメント欄の下に表示される注意文言</th>
617
  <td><input type="text" name="tsa_caution_message" size="80"
618
  value="<?php echo get_option('tsa_caution_message', $default_caution_msg);?>" /><br />(初期設定:<?php echo $default_caution_msg;?>)</td>
619
  </tr>
620
  <tr valign="top">
621
- <th scope="row">日本語文字列規定値未満エラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)
622
- </th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
623
  <td><input type="text" name="tsa_error_message" size="80"
624
  value="<?php echo get_option('tsa_error_message', $default_error_msg);?>" /><br />(初期設定:<?php echo $default_error_msg;?>)</td>
625
  </tr>
@@ -714,17 +685,6 @@ function removeIpAddressOnData(ipAddressStr) {
714
  </table>
715
  <h3>投稿IPアドレスによる制御設定</h3>
716
  <table class="form-table">
717
- <tr valign="top">
718
- <th scope="row">SPAMブラックリスト利用</th>
719
- <td><?php
720
- $chk = "";
721
- if (get_option('tsa_spam_champuru_flg', "") == "1" ) {
722
- $chk = "checked=\"checked\"";
723
- }
724
- ?>
725
- <label><input type="checkbox" name="tsa_spam_champuru_flg" value="1" <?php echo $chk; ?> /><a href="http://spam-champuru.livedoor.com/dnsbl/">スパムちゃんぷるーDNSBL</a>に登録されているIPアドレスからのコメントを拒否する</label>
726
- </td>
727
- </tr>
728
  <tr valign="top">
729
  <th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
730
  <td><?php
@@ -734,7 +694,7 @@ function removeIpAddressOnData(ipAddressStr) {
734
  }
735
  ?> <label><input type="checkbox"
736
  name="tsa_ip_block_from_spam_chk_flg" value="1"
737
- <?php echo $chk; ?> />&nbsp;スパム投稿設定したIPアドレスからの投稿も無視する</label>&nbsp;※Akismet等で自動的にスパムマークされたものも含む<br />
738
  <?php
739
  // wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
740
  $results = $wpdb->get_results("SELECT DISTINCT comment_author_IP FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC ");
@@ -773,16 +733,6 @@ function removeIpAddressOnData(ipAddressStr) {
773
  size="80"
774
  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>
775
  </tr>
776
-
777
- <tr style="background-color: #efefef;"><td colspan="2"><hr />※上記のスパムチェックから除外するIPアドレスがあれば下記に設定してください。優先的に通過させます。<br />※トラックバックは優先通過ではありません。</td></tr>
778
- <tr style="background-color: #efefef;" valign="top">
779
- <th scope="row"><strong>IP制御免除<br />ホワイトリスト</strong><br />※ここに登録したIPアドレスはスパムフィルタを掛けず優先的に通します。<br />※日本語以外の言語でご利用になられるお客様のIPアドレスを登録するなどご利用ください。<br />改行区切りで複数設定できます。範囲指定も可能です。(半角数字とスラッシュ、ドットのみ)</th>
780
- <td>
781
- <textarea name="tsa_white_ip_addresses"
782
- id="tsa_white_ip_addresses" cols="80" rows="10"><?php echo get_option('tsa_white_ip_addresses', "");?></textarea>
783
- </td>
784
- </tr>
785
-
786
  </table>
787
  <h3>スパムデータベース</h3>
788
  <table class="form-table">
@@ -795,15 +745,15 @@ function removeIpAddressOnData(ipAddressStr) {
795
  }
796
  ?> <label><input type="checkbox"
797
  name="tsa_spam_data_save" value="1" <?php echo $chk; ?> />&nbsp;スパムコメント情報を保存する</label><br />※Throws
798
- SPAM Away設定画面表示時に時間がかかることがあります。<br />※「保存する」を解除した場合でもテーブルは残りますので<?php echo get_option('tsa_spam_keep_day_count', $default_spam_keep_day_count); ?>日以内の取得データは表示されます。
799
  </td>
800
  </tr>
801
  <tr>
802
- <th scope="row">スパムデータを表示する期間</th>
803
  <td>
804
  <input
805
  type="text" name="tsa_spam_keep_day_count" size="3"
806
- value="<?php echo get_option('tsa_spam_keep_day_count', $default_spam_keep_day_count); ?>" />日分(最低7日)&nbsp;
807
  <?php
808
  $chk = "";
809
  if (get_option('tsa_spam_data_delete_flg', "") == "1") {
@@ -811,8 +761,7 @@ function removeIpAddressOnData(ipAddressStr) {
811
  }
812
  ?>
813
  <label><input type="checkbox" name="tsa_spam_data_delete_flg" value="1"
814
- <?php echo $chk; ?> />&nbsp;期間が過ぎたデータを削除する</label><br />
815
- ※一度消したデータは復活出来ませんのでご注意ください。また最低7日分は保存されます。
816
  </td>
817
  </tr>
818
  <tr valign="top">
@@ -841,11 +790,22 @@ function removeIpAddressOnData(ipAddressStr) {
841
  (初期設定:<?php echo $default_spam_limit_over_interval_error_msg; ?>)
842
  </td>
843
  </tr>
 
 
 
 
 
 
 
 
 
 
 
844
  </table>
845
 
846
  <input type="hidden" name="action" value="update" /> <input
847
  type="hidden" name="page_options"
848
- 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,tsa_spam_data_save,tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message,tsa_spam_champuru_flg,tsa_spam_keep_day_count,tsa_spam_data_delete_flg,tsa_white_ip_addresses" />
849
  <p class="submit">
850
  <input type="submit" class="button-primary"
851
  value="<?php _e('Save Changes') ?>" />
@@ -854,16 +814,14 @@ function removeIpAddressOnData(ipAddressStr) {
854
  <?php
855
  if ( get_option( 'tsa_spam_data_save' ) == "1" ) {
856
  // 日数
857
- $gdays = get_option( 'tsa_spam_keep_day_count', $default_spam_keep_day_count);
858
- if ( $gdays < $lower_spam_keep_day_count ) { $gdays = $lower_spam_keep_day_count; }
859
  // 表カラー
860
  $unique_color="#114477";
861
  $web_color="#3377B6";
862
  ?>
863
- <h3>スパム投稿<?php echo $gdays; ?>日間の推移</h3>
864
- <div class="clear"></div>
865
 
866
- <div class="clear" style="background-color: #efefef;">
867
  <table style="width: 100%; border: none;">
868
  <tr>
869
  <?php
@@ -935,7 +893,7 @@ print "><div style='float:left;width:100%;font-family:Helvetica;font-size:7pt;te
935
  </div>
936
  &nbsp;※&nbsp;数値は
937
  &lt;上段&gt;がSPAM投稿したユニークIPアドレス数、&nbsp;&lt;下段&gt;が破棄したスパム投稿数<br />
938
- <div class="clear">
939
  <?php
940
  // wp_tsa_spam の ip_address カラムに存在するIP_ADDRESS投稿は無視するか
941
  $results = $wpdb->get_results(
@@ -954,7 +912,6 @@ ORDER BY cnt DESC"
954
  ※「このIPアドレスを任意のブロック対象IPアドレスにコピーする」ボタンを押した場合は上の<b>「変更を保存」</b>をクリックし内容を保存してください。
955
  </p>
956
  <p>※IPアドレスをクリックすると特定のホストが存在するか確認し存在する場合は表示されます。</p>
957
- <p>「スパムデータから削除する」ボタンを押しますと該当IPアドレスのスパム投稿データが削除されます。テストしたあとの削除などに使用してください。</p>
958
  <?php if ( count( $results ) > 0 ) {
959
  $p_url = WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__));
960
  wp_enqueue_script("jquery.tablesorter", $p_url."js/jquery.tablesorter.min.js", array('jquery'), FALSE);
@@ -1103,11 +1060,10 @@ jQuery(function() {
1103
  jQuery('#spam_list').tablesorter({
1104
  widgets: ['zebra'],
1105
  headers: {
1106
- 0: { id: "ipAddress" },
1107
- 1: { sorter: "digit" },
1108
- 2: { sorter: "shortDate" },
1109
- 3: { sorter: false }
1110
- }
1111
  });
1112
 
1113
  });
@@ -1124,7 +1080,7 @@ jQuery(function() {
1124
  <tr>
1125
  <th class="cols0">IPアドレス</th>
1126
  <th class="cols1">投稿数</th>
1127
- <th class="cols2">最終投稿日時</th>
1128
  <th class="cols3">スパムIP登録</th>
1129
  </tr>
1130
  </thead>
@@ -1138,37 +1094,30 @@ jQuery(function() {
1138
  <tr>
1139
  <td>
1140
  <b><a href="javascript:void(0);"
1141
- onclick="window.open('<?php echo $p_url; ?>hostbyip.php?ip=<?php echo $spam_ip; ?>', 'hostbyip', 'width=350,height=300,scrollbars=no,location=no,menubar=no,toolbar=no,directories=no,status=no');"><?php echo $spam_ip; ?>
1142
- </a></b><br clear="all" />
1143
- <input type="button"
1144
- onclick="javascript:removeIpAddressOnData('<?php echo $spam_ip; ?>');"
1145
- value="スパムデータから削除する" />
1146
  </td>
1147
  <td><?php echo $spam_cnt; ?>回</td>
1148
  <td><?php echo $last_post_date; ?></td>
1149
- <td><input type="button"
1150
  onclick="javascript:addIpAddresses('<?php echo $spam_ip; ?>');"
1151
- value="ブロック対象IPアドレスにコピー[<?php echo $spam_ip; ?>]" /></td>
1152
  </tr>
1153
  <?php
1154
  }
1155
  ?>
1156
  </tbody>
1157
  </table>
1158
- <?php } ?>
1159
  </div>
1160
  </div>
 
1161
  </div>
1162
  <?php } ?>
1163
  </form>
1164
- <form method="post" id="remove">
1165
- <input type="hidden" name="ip_address" id="remove_ip_address" value="" />
1166
- <input type="hidden" name="act" value="remove_ip" />
1167
- </form>
1168
  <p>スパム投稿IPアドレスを参考にアクセス禁止対策を行なってください。</p>
1169
- <div class="clear"></div>
1170
- </div>
1171
 
 
 
1172
  <?php
1173
  }
1174
 
@@ -1229,4 +1178,4 @@ jQuery(function() {
1229
  return NULL;
1230
  }
1231
 
1232
- }
9
  class ThrowsSpamAway {
10
 
11
  // version
12
+ var $version = '2.5.1';
13
  var $table_name = "";
14
 
15
  public function __construct($flg = FALSE) {
16
  global $default_spam_data_save;
 
 
 
17
  if ($flg == FALSE) {
18
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
+ global $wpdb;
21
+ // 接頭辞(wp_)を付けてテーブル名を設定
22
+ $this->table_name = $wpdb->prefix . 'tsa_spam';
23
  }
24
 
25
  /**
70
  if ( get_option('tsa_spam_data_save', $default_spam_data_save) != "1" ) return;
71
 
72
  global $wpdb;
73
+ global $default_spam_keep_day_count;
74
 
75
+ // 保存期間終了したデータ削除
76
+ $skdc = get_option('tsa_spam_keep_day_count', $default_spam_keep_day_count);
77
+ if ( get_option('tsa_spam_data_delete_flg', "") == "1" ) {
78
+ // 期間 get_option('tsa_spam_keep_day_count') 日
79
+ $wpdb->query(
80
+ "DELETE FROM $this->table_name WHERE post_date < '".gmdate('Y-m-d 23:59:59', current_time('timestamp')-86400 * $skdc)."'"
81
+ );
82
+ }
83
  //保存するために配列にする
84
  $set_arr = array(
85
  'post_id' => $post_id,
96
  global $default_caution_msg;
97
  // 注意文言表示
98
  $caution_msg = get_option( 'tsa_caution_message', $default_caution_msg );
99
+ // 注意文言が設定されている場合のみ表示する
100
+ if ( strlen( trim( $caution_msg ) ) > 0 ) {
101
+ echo '<p id="throwsSpamAway">'.$caution_msg.'</p>'; // div から p タグへ変更
102
+ }
103
  return TRUE;
104
  }
105
 
115
  global $default_spam_limit_over_interval_error_msg;
116
  global $error_type;
117
 
 
118
  if( $user_ID ) {
119
  return $id;
120
  }
121
  // コメント(comment)及び名前(author)の中も検査
122
  $author = $_POST["author"];
123
  $comment = $_POST["comment"];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  // IP系の検査
125
+ $ip = $_SERVER['REMOTE_ADDR'];
126
  if ( !$newThrowsSpamAway->ip_check( $ip ) ) {
127
  // アウト!
128
  } else
443
  global $wpdb; // WordPress DBアクセス
444
  global $default_japanese_string_min_count;
445
  global $default_caution_msg;
446
+ global $default_caution_msg_point;
447
  global $default_back_second;
448
  global $default_error_msg;
449
  global $default_ng_key_error_msg;
458
  global $default_spam_limit_over_interval;
459
  global $default_spam_limit_over_interval_error_msg;
460
 
 
 
461
  global $default_spam_keep_day_count;
462
 
463
  // 設定完了の場合はメッセージ表示
464
  $_saved = FALSE;
 
 
 
 
 
 
 
 
 
 
 
 
 
465
  if ( $_GET['settings-updated'] == "true" ) {
466
  $_saved = TRUE;
467
  }
526
  }
527
  return false;
528
  }
 
 
 
 
 
 
 
 
529
  </script>
530
  <div class="wrap">
531
  <h2>Throws SPAM Away設定</h2>
537
  <?php wp_nonce_field('update-options'); ?>
538
  <table class="form-table">
539
  <tr valign="top">
540
+ <th scope="row" >日本語が存在しない場合、無視対象とする<br />(日本語文字列が存在しない場合無視対象となります。)
541
  </th>
542
  <td><?php
543
  $chk_1 = "";
567
  </td>
568
  </tr>
569
  <tr valign="top">
570
+ <th scope="row" id="tsa_caution_message">コメント欄の下に表示される注意文言</th>
571
  <td><input type="text" name="tsa_caution_message" size="80"
572
  value="<?php echo get_option('tsa_caution_message', $default_caution_msg);?>" /><br />(初期設定:<?php echo $default_caution_msg;?>)</td>
573
  </tr>
574
  <tr valign="top">
575
+ <th scope="row" id="tsa_caution_msg_point">コメント注意文言の表示位置</th>
576
+ <td><?php
577
+ $chk_1 = "";
578
+ $chk_2 = "";
579
+ if (get_option('tsa_caution_msg_point', $default_caution_msg_point) == "2") {
580
+ $chk_2 = " checked=\"checked\"";
581
+ } else {
582
+ $chk_1 = " checked=\"checked\"";
583
+ }
584
+ ?> <label><input type="radio"
585
+ name="tsa_caution_msg_point" value="1" <?php echo $chk_1;?> />&nbsp;コメント送信ボタンの上</label>&nbsp;
586
+ <label><input type="radio" name="tsa_caution_msg_point" value="2"
587
+ <?php echo $chk_2;?> />&nbsp;コメント送信フォームの下</label>
588
+ </td>
589
+ </tr>
590
+ <tr><td colspan="2">※表示が崩れる場合、<a href="#tsa_caution_msg_point">「コメント注意文言の表示位置」</a>の変更 や <a href="#tsa_caution_message">「コメント欄の下に表示される注意文言」</a>を空白にすること を試してみて下さい。<br />
591
+ 「コメント欄の下に表示される注意文言」が空白の場合は文言表示のタグ自体が挿入されないようになります。</td></tr>
592
+ <tr valign="top">
593
+ <th scope="row">日本語文字列規定値未満エラー時に表示される文言<br />(元の記事に戻ってくる時間の間のみ表示)</th>
594
  <td><input type="text" name="tsa_error_message" size="80"
595
  value="<?php echo get_option('tsa_error_message', $default_error_msg);?>" /><br />(初期設定:<?php echo $default_error_msg;?>)</td>
596
  </tr>
685
  </table>
686
  <h3>投稿IPアドレスによる制御設定</h3>
687
  <table class="form-table">
 
 
 
 
 
 
 
 
 
 
 
688
  <tr valign="top">
689
  <th scope="row">WordPressのコメントで「スパム」にしたIPからの投稿にも採用する</th>
690
  <td><?php
694
  }
695
  ?> <label><input type="checkbox"
696
  name="tsa_ip_block_from_spam_chk_flg" value="1"
697
+ <?php echo $chk; ?> />&nbsp;スパム投稿設定したIPアドレスからの投稿も無視する</label><br />
698
  <?php
699
  // wp_commentsの comment_approved カラムが「spam」のIP_ADDRESSからの投稿は無視する
700
  $results = $wpdb->get_results("SELECT DISTINCT comment_author_IP FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_author_IP ASC ");
733
  size="80"
734
  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>
735
  </tr>
 
 
 
 
 
 
 
 
 
 
736
  </table>
737
  <h3>スパムデータベース</h3>
738
  <table class="form-table">
745
  }
746
  ?> <label><input type="checkbox"
747
  name="tsa_spam_data_save" value="1" <?php echo $chk; ?> />&nbsp;スパムコメント情報を保存する</label><br />※Throws
748
+ SPAM Away設定画面表示時に時間がかかることがあります。<br />※「保存する」を解除した場合でもテーブルは残りますので30日以内の取得データは表示されます。
749
  </td>
750
  </tr>
751
  <tr>
752
+ <th scope="row">スパムデータを保存する期間</th>
753
  <td>
754
  <input
755
  type="text" name="tsa_spam_keep_day_count" size="3"
756
+ value="<?php echo get_option('tsa_spam_keep_day_count', $default_spam_keep_day_count); ?>" />日分&nbsp;
757
  <?php
758
  $chk = "";
759
  if (get_option('tsa_spam_data_delete_flg', "") == "1") {
761
  }
762
  ?>
763
  <label><input type="checkbox" name="tsa_spam_data_delete_flg" value="1"
764
+ <?php echo $chk; ?> />&nbsp;期間が過ぎたデータを削除する</label>
 
765
  </td>
766
  </tr>
767
  <tr valign="top">
790
  (初期設定:<?php echo $default_spam_limit_over_interval_error_msg; ?>)
791
  </td>
792
  </tr>
793
+ <tr>
794
+ <th scope="row">スパムIPデータベース利用</th>
795
+ <td><?php
796
+ $chk = "";
797
+ if (get_option('tsa_spam_champuru_flg', "") == "1" ) {
798
+ $chk = "checked=\"checked\"";
799
+ }
800
+ ?>
801
+ <label><input type="checkbox" name="tsa_spam_champuru_flg" value="1" <?php echo $chk; ?> /><a href="http://spam-champuru.livedoor.com/dnsbl/">スパムちゃんぷるーDNSBL</a>に登録されているIPアドレスからのコメントを拒否する</label>
802
+ </td>
803
+ </tr>
804
  </table>
805
 
806
  <input type="hidden" name="action" value="update" /> <input
807
  type="hidden" name="page_options"
808
+ value="tsa_on_flg,tsa_japanese_string_min_count,tsa_back_second,tsa_caution_message,tsa_caution_msg_point,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,tsa_spam_data_save,tsa_spam_limit_flg,tsa_spam_limit_minutes,tsa_spam_limit_count,tsa_spam_limit_over_interval,tsa_spam_limit_over_interval_error_message,tsa_spam_champuru_flg,tsa_spam_keep_day_count,tsa_spam_data_delete_flg" />
809
  <p class="submit">
810
  <input type="submit" class="button-primary"
811
  value="<?php _e('Save Changes') ?>" />
814
  <?php
815
  if ( get_option( 'tsa_spam_data_save' ) == "1" ) {
816
  // 日数
817
+ $gdays = 30;
 
818
  // 表カラー
819
  $unique_color="#114477";
820
  $web_color="#3377B6";
821
  ?>
822
+ <h3>スパム投稿30日間の推移</h3>
 
823
 
824
+ <div style="background-color: #efefef;">
825
  <table style="width: 100%; border: none;">
826
  <tr>
827
  <?php
893
  </div>
894
  &nbsp;※&nbsp;数値は
895
  &lt;上段&gt;がSPAM投稿したユニークIPアドレス数、&nbsp;&lt;下段&gt;が破棄したスパム投稿数<br />
896
+ <div>
897
  <?php
898
  // wp_tsa_spam の ip_address カラムに存在するIP_ADDRESS投稿は無視するか
899
  $results = $wpdb->get_results(
912
  ※「このIPアドレスを任意のブロック対象IPアドレスにコピーする」ボタンを押した場合は上の<b>「変更を保存」</b>をクリックし内容を保存してください。
913
  </p>
914
  <p>※IPアドレスをクリックすると特定のホストが存在するか確認し存在する場合は表示されます。</p>
 
915
  <?php if ( count( $results ) > 0 ) {
916
  $p_url = WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__));
917
  wp_enqueue_script("jquery.tablesorter", $p_url."js/jquery.tablesorter.min.js", array('jquery'), FALSE);
1060
  jQuery('#spam_list').tablesorter({
1061
  widgets: ['zebra'],
1062
  headers: {
1063
+ 0: {id:"ipAddress"},
1064
+ 3: {sorter:false},
1065
+ 2: { sorter: "shortDate" }
1066
+ }
 
1067
  });
1068
 
1069
  });
1080
  <tr>
1081
  <th class="cols0">IPアドレス</th>
1082
  <th class="cols1">投稿数</th>
1083
+ <th class="cols2">最終投稿日</th>
1084
  <th class="cols3">スパムIP登録</th>
1085
  </tr>
1086
  </thead>
1094
  <tr>
1095
  <td>
1096
  <b><a href="javascript:void(0);"
1097
+ onclick="window.open('<?php echo $p_url; ?>hostbyip.php?ip=<?php echo $spam_ip; ?>', 'hostbyip', 'width=350,height=250,scrollbars=no,location=no,menubar=no,toolbar=no,directories=no,status=no');"><?php echo $spam_ip; ?>
1098
+ </a></b>
 
 
 
1099
  </td>
1100
  <td><?php echo $spam_cnt; ?>回</td>
1101
  <td><?php echo $last_post_date; ?></td>
1102
+ <td>&nbsp;<input type="button"
1103
  onclick="javascript:addIpAddresses('<?php echo $spam_ip; ?>');"
1104
+ value="このIPアドレスを任意のブロック対象IPアドレスにコピーする" /></td>
1105
  </tr>
1106
  <?php
1107
  }
1108
  ?>
1109
  </tbody>
1110
  </table>
 
1111
  </div>
1112
  </div>
1113
+ <?php } ?>
1114
  </div>
1115
  <?php } ?>
1116
  </form>
 
 
 
 
1117
  <p>スパム投稿IPアドレスを参考にアクセス禁止対策を行なってください。</p>
 
 
1118
 
1119
+ </div>
1120
+ <br clear="all" />
1121
  <?php
1122
  }
1123
 
1178
  return NULL;
1179
  }
1180
 
1181
+ }
throws_spam_away.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin URI: http://gti.jp/tsa/
5
  Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
6
  Author: 株式会社ジーティーアイ さとう たけし
7
- Version: 2.5
8
  Author URI: http://gti.jp/
9
  */
10
  require_once 'throws_spam_away.class.php';
@@ -24,6 +24,9 @@ $error_type = "";
24
  $default_japanese_string_min_count = 3;
25
  // コメント欄下に表示される注意文言(初期設定)
26
  $default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
 
 
 
27
  // エラー時に表示されるエラー文言(初期設定)
28
  $default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
29
  // 元画面に戻る時間
@@ -50,9 +53,7 @@ $default_spam_limit_over_interval = 10; // だがそれを超えたら(デフ
50
  $default_spam_limit_over_interval_error_msg = ""; // そしてその際のエラーメッセージは・・・
51
 
52
  // スパムデータ保持期間(日)
53
- $default_spam_keep_day_count = 30;
54
- // 最低保存期間(日)
55
- $lower_spam_keep_day_count = 7;
56
 
57
  // スパムちゃんぷるーホスト
58
  $spam_champuru_host = "dnsbl.spam-champuru.livedoor.com";
@@ -62,6 +63,7 @@ $spam_champuru_host = "dnsbl.spam-champuru.livedoor.com";
62
  // 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
63
  // 元の記事に戻ってくる時間(秒) [tsa_back_second] 数値型
64
  // コメント欄の下に表示される注意文言 [tsa_caution_message] 文字列型
 
65
  // 日本語文字列規定値未満エラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
66
  // [tsa_error_message] 文字列型
67
  // その他NGキーワード(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。挙動は同じです。NGキーワードだけでも使用できます。)
@@ -92,6 +94,14 @@ $spam_champuru_host = "dnsbl.spam-champuru.livedoor.com";
92
  $newThrowsSpamAway = new ThrowsSpamAway;
93
  // トラックバックチェックフィルター
94
  add_filter('preprocess_comment', array(&$newThrowsSpamAway, 'trackback_spam_away'), 1, 1);
 
95
  // コメントフォーム表示
96
- add_action('comment_form_after', array(&$newThrowsSpamAway, "comment_form"), 9999); // Ver.2.1.1 comment_form → comment_form_after
97
- add_action('pre_comment_on_post', array(&$newThrowsSpamAway, "comment_post"), 1);
 
 
 
 
 
 
 
4
  Plugin URI: http://gti.jp/tsa/
5
  Description: コメント内に日本語の記述が存在しない場合はあたかも受け付けたように振る舞いながらも捨ててしまうプラグイン
6
  Author: 株式会社ジーティーアイ さとう たけし
7
+ Version: 2.5.1
8
  Author URI: http://gti.jp/
9
  */
10
  require_once 'throws_spam_away.class.php';
24
  $default_japanese_string_min_count = 3;
25
  // コメント欄下に表示される注意文言(初期設定)
26
  $default_caution_msg = '日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)';
27
+ // コメント欄下に表示する位置(初期設定)
28
+ $default_caution_msg_point = "1"; //1:"comment_form", 2:"comment_form_after"
29
+
30
  // エラー時に表示されるエラー文言(初期設定)
31
  $default_error_msg = '日本語を規定文字数以上含まない記事は投稿できませんよ。';
32
  // 元画面に戻る時間
53
  $default_spam_limit_over_interval_error_msg = ""; // そしてその際のエラーメッセージは・・・
54
 
55
  // スパムデータ保持期間(日)
56
+ $default_spam_keep_day_count = 60;
 
 
57
 
58
  // スパムちゃんぷるーホスト
59
  $spam_champuru_host = "dnsbl.spam-champuru.livedoor.com";
63
  // 日本語文字列含有数 (入力値以下ならエラー) [tsa_japanese_string_min_count] 数値型
64
  // 元の記事に戻ってくる時間(秒) [tsa_back_second] 数値型
65
  // コメント欄の下に表示される注意文言 [tsa_caution_message] 文字列型
66
+ // コメント欄の下に表示される注意文言の位置 [tsa_caution_message_point] 文字列型("1" or "2")
67
  // 日本語文字列規定値未満エラー時に表示される文言(元の記事に戻ってくる時間の間のみ表示)
68
  // [tsa_error_message] 文字列型
69
  // その他NGキーワード(日本語でも英語(その他)でもNGとしたいキーワードを半角カンマ区切りで複数設定できます。挙動は同じです。NGキーワードだけでも使用できます。)
94
  $newThrowsSpamAway = new ThrowsSpamAway;
95
  // トラックバックチェックフィルター
96
  add_filter('preprocess_comment', array(&$newThrowsSpamAway, 'trackback_spam_away'), 1, 1);
97
+ // 注意文言表示
98
  // コメントフォーム表示
99
+ $comment_disp_point = "comment_form";
100
+ $comment_form_action_point = get_option("tsa_caution_msg_point", $default_caution_msg_point);
101
+ // フォーム内かフォーム外か判断する
102
+ if ("2" == $comment_form_action_point) {
103
+ $comment_disp_point = "comment_form_after";
104
+ }
105
+ add_action($comment_disp_point, array(&$newThrowsSpamAway, "comment_form"), 9999);
106
+ // コメントチェックフィルター
107
+ add_action('pre_comment_on_post', array(&$newThrowsSpamAway, "comment_post"), 1);
uninstall.php CHANGED
@@ -36,3 +36,10 @@ delete_option('tsa_spam_limit_minutes');
36
  delete_option('tsa_spam_limit_count');
37
  delete_option('tsa_spam_limit_over_interval');
38
  delete_option('tsa_spam_limit_over_interval_error_message');
 
 
 
 
 
 
 
36
  delete_option('tsa_spam_limit_count');
37
  delete_option('tsa_spam_limit_over_interval');
38
  delete_option('tsa_spam_limit_over_interval_error_message');
39
+ // ver.2.5
40
+ delete_option('tsa_spam_champuru_flg');
41
+ delete_option('tsa_spam_keep_day_count');
42
+ delete_option('tsa_spam_data_delete_flg');
43
+ delete_option('tsa_white_ip_addresses');
44
+ // ver.2.5.1
45
+ delete_option('tsa_caution_msg_point');