Anti-spam - Version 1.7

Version Description

  • 2013-05-31 =
  • if site has caching plugin enabled and cache is not cleared or if theme does not use 'comment_form' action - Anti-spam plugin does not worked; so now whole input added via javascript if it does not exist in html
Download this release

Release Info

Developer webvitaly
Plugin Icon 128x128 Anti-spam
Version 1.7
Comparing to
See all releases

Code changes from version 1.6 to 1.7

Files changed (3) hide show
  1. anti-spam.php +97 -97
  2. js/anti-spam.js +21 -1
  3. readme.txt +14 -7
anti-spam.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  /*
3
  Plugin Name: Anti-spam
4
- Plugin URI: http://wordpress.org/extend/plugins/anti-spam/
5
  Description: No spam in comments. No captcha.
6
- Version: 1.6
7
  Author: webvitaly
8
  Author URI: http://web-profile.com.ua/wordpress/plugins/
9
  License: GPLv2 or later
@@ -15,156 +15,156 @@ $antispam_allow_trackbacks = false; // if true, than trackbacks will be allowed
15
  // trackbacks almost not used by users, but mostly used by spammers; pingbacks are always enabled
16
  // more about the difference between trackback and pingback - http://web-profile.com.ua/web/trackback-vs-pingback/
17
 
18
- $antispam_version = '1.6';
19
 
20
 
21
  if ( ! function_exists( 'antispam_scripts_styles_init' ) ) :
22
- function antispam_scripts_styles_init() {
23
- global $antispam_version;
24
- if ( !is_admin() ) { // && is_singular() && comments_open() && get_option( 'thread_comments' )
25
- //wp_enqueue_script('jquery');
26
- wp_enqueue_script( 'anti-spam-script', plugins_url( '/js/anti-spam.js', __FILE__ ), array( 'jquery' ), $antispam_version );
 
27
  }
28
- }
29
- add_action('init', 'antispam_scripts_styles_init');
30
  endif; // end of antispam_scripts_styles_init()
31
 
32
 
33
  if ( ! function_exists( 'antispam_form_part' ) ) :
34
- function antispam_form_part() {
35
- if ( ! is_user_logged_in() ) { // add anti-spam fields only for not logged in users
36
- $antispam_form_part = '
37
  <p class="comment-form-anti-spam" style="clear:both;">
38
  <label for="anti-spam-q">Current <span style="display:none;">month</span> <span style="display:inline;">ye@r</span> <span style="display:none;">day</span></label> <span class="required">*</span>
39
  <input type="hidden" name="anti-spam-a" id="anti-spam-a" value="'.date('Y').'" />
40
  <input type="text" name="anti-spam-q" id="anti-spam-q" size="30" value="1980" />
41
  </p>
42
  '; // question (hidden with js) [aria-required="true" required="required"]
43
- $antispam_form_part .= '
44
  <p class="comment-form-anti-spam-2" style="display:none;">
45
  <label for="anti-spam-e-email-url">Leave this field empty</label> <span class="required">*</span>
46
  <input type="text" name="anti-spam-e-email-url" id="anti-spam-e-email-url" size="30" value=""/>
47
  </p>
48
  '; // empty field (hidden with css)
49
- echo $antispam_form_part;
 
50
  }
51
- }
52
- add_action( 'comment_form', 'antispam_form_part' ); // add anti-spam input to the comment form
53
  endif; // end of antispam_form_part()
54
 
55
 
56
  if ( ! function_exists( 'antispam_check_comment' ) ) :
57
- function antispam_check_comment( $commentdata ) {
58
- global $antispam_send_spam_comment_to_admin, $antispam_allow_trackbacks;
59
- extract( $commentdata );
60
 
61
- $antispam_pre_error_message = '<strong><a href="javascript:window.history.back()">Go back</a></strong> and try again.';
62
- $antispam_error_message = '';
63
 
64
- if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
65
- $antispam_admin_email = get_option('admin_email'); // admin email
66
 
67
- $post = get_post( $comment->comment_post_ID );
68
- $antispam_message_spam_info = 'Spam for post: "'.$post->post_title.'"' . "\r\n";
69
- $antispam_message_spam_info .= get_permalink( $comment->comment_post_ID ) . "\r\n\r\n";
70
 
71
- $antispam_message_spam_info .= 'IP : ' . $_SERVER['REMOTE_ADDR'] . "\r\n";
72
- $antispam_message_spam_info .= 'User agent : ' . $_SERVER['HTTP_USER_AGENT'] . "\r\n";
73
- $antispam_message_spam_info .= 'Referer : ' . $_SERVER['HTTP_REFERER'] . "\r\n\r\n";
74
 
75
- $antispam_message_spam_info .= 'Comment data:'."\r\n"; // lets see what comment data spammers try to submit
76
- foreach ( $commentdata as $key => $value ) {
77
- $antispam_message_spam_info .= '$commentdata['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
78
- }
79
- $antispam_message_spam_info .= "\r\n\r\n";
80
 
81
- $antispam_message_spam_info .= 'Post vars:'."\r\n"; // lets see what post vars spammers try to submit
82
- foreach ( $_POST as $key => $value ) {
83
- $antispam_message_spam_info .= '$_POST['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
84
- }
85
- $antispam_message_spam_info .= "\r\n\r\n";
86
 
87
- $antispam_message_spam_info .= 'Cookie vars:'."\r\n"; // lets see what cookie vars spammers try to submit
88
- foreach ( $_COOKIE as $key => $value ) {
89
- $antispam_message_spam_info .= '$_COOKIE['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
90
- }
91
- $antispam_message_spam_info .= "\r\n\r\n";
92
 
93
- $antispam_message_append = '-----------------------------'."\r\n";
94
- $antispam_message_append .= 'This is spam comment rejected by Anti-spam plugin. wordpress.org/extend/plugins/anti-spam/' . "\r\n";
95
- $antispam_message_append .= 'You may edit "anti-spam.php" file and disable this notification.' . "\r\n";
96
- $antispam_message_append .= 'You should find "$antispam_send_spam_comment_to_admin" and make it equal to "false".' . "\r\n";
97
- }
98
 
99
- if ( ! is_user_logged_in() && $comment_type != 'pingback' && $comment_type != 'trackback' ) { // logged in user is not a spammer
100
- $spam_flag = false;
101
 
102
- if ( trim( $_POST['anti-spam-q'] ) != date('Y') ) { // answer is wrong - maybe spam
103
- $spam_flag = true;
104
- if ( empty( $_POST['anti-spam-q'] ) ) { // empty answer - maybe spam
105
- $antispam_error_message .= '<br> Error: empty answer. ['.$_POST['anti-spam-q'].']';
106
- } else {
107
- $antispam_error_message .= '<br> Error: answer is wrong. ['.$_POST['anti-spam-q'].']';
 
108
  }
109
- }
110
- if ( ! empty( $_POST['anti-spam-e-email-url'] ) ) { // field is not empty - maybe spam
111
- $spam_flag = true;
112
- $antispam_error_message .= '<br> Error: field should be empty. ['.$_POST['anti-spam-e-email-url'].']';
113
- }
114
- if ( $spam_flag ) { // if we have spam
115
- if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
116
 
117
- $antispam_subject = 'Spam comment on site ['.get_bloginfo( 'name' ).']'; // email subject
118
- $antispam_message = '';
119
 
120
- $antispam_message .= 'Errors: ' . $antispam_error_message . "\r\n\r\n";
121
 
122
- $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data
123
 
124
- $antispam_message .= $antispam_message_append;
125
 
126
- @wp_mail( $antispam_admin_email, $antispam_subject, $antispam_message ); // send spam comment to admin email
 
 
127
  }
128
- wp_die( $antispam_pre_error_message . $antispam_error_message ); // die - do not send comment and show errors
129
  }
130
- }
131
 
132
- if( ! $antispam_allow_trackbacks ) { // if trackbacks are blocked (pingbacks are alowed)
133
- if ( $comment_type == 'trackback' ) { // if trackbacks ( || $comment_type == 'pingback' )
134
- $antispam_error_message .= '<br> Error: trackbacks are disabled. ';
135
- if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
136
- $antispam_subject = 'Spam trackback on site ['.get_bloginfo( 'name' ).']'; // email subject
137
 
138
- $antispam_message = '';
139
 
140
- $antispam_message .= 'Errors: ' . $antispam_error_message . "\r\n\r\n";
141
 
142
- $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data
143
 
144
- $antispam_message .= $antispam_message_append;
145
 
146
- @wp_mail( $antispam_admin_email, $antispam_subject, $antispam_message ); // send trackback comment to admin email
 
 
147
  }
148
- wp_die( $antispam_pre_error_message . $antispam_error_message ); // die - do not send trackback
149
  }
150
- }
151
 
152
- return $commentdata; // if comment does not looks like spam
153
- }
154
 
155
- if( ! is_admin() ) {
156
- add_filter( 'preprocess_comment', 'antispam_check_comment', 1 );
157
- }
158
  endif; // end of antispam_check_comment()
159
 
160
 
161
  if ( ! function_exists( 'antispam_plugin_meta' ) ) :
162
- function antispam_plugin_meta( $links, $file ) { // add 'Plugin page' and 'Donate' links to plugin meta row
163
- if ( strpos( $file, 'anti-spam.php' ) !== false ) {
164
- $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/wordpress/plugins/anti-spam/" title="Plugin page">' . __('Anti-spam') . '</a>' ) );
165
- $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/donate/" title="Support the development">' . __('Donate') . '</a>' ) );
 
 
166
  }
167
- return $links;
168
- }
169
- add_filter( 'plugin_row_meta', 'antispam_plugin_meta', 10, 2 );
170
  endif; // end of antispam_plugin_meta()
1
  <?php
2
  /*
3
  Plugin Name: Anti-spam
4
+ Plugin URI: http://wordpress.org/plugins/anti-spam/
5
  Description: No spam in comments. No captcha.
6
+ Version: 1.7
7
  Author: webvitaly
8
  Author URI: http://web-profile.com.ua/wordpress/plugins/
9
  License: GPLv2 or later
15
  // trackbacks almost not used by users, but mostly used by spammers; pingbacks are always enabled
16
  // more about the difference between trackback and pingback - http://web-profile.com.ua/web/trackback-vs-pingback/
17
 
18
+ $antispam_version = '1.7';
19
 
20
 
21
  if ( ! function_exists( 'antispam_scripts_styles_init' ) ) :
22
+ function antispam_scripts_styles_init() {
23
+ global $antispam_version;
24
+ if ( !is_admin() ) { // && is_singular() && comments_open() && get_option( 'thread_comments' )
25
+ //wp_enqueue_script('jquery');
26
+ wp_enqueue_script( 'anti-spam-script', plugins_url( '/js/anti-spam.js', __FILE__ ), array( 'jquery' ), $antispam_version );
27
+ }
28
  }
29
+ add_action('init', 'antispam_scripts_styles_init');
 
30
  endif; // end of antispam_scripts_styles_init()
31
 
32
 
33
  if ( ! function_exists( 'antispam_form_part' ) ) :
34
+ function antispam_form_part() {
35
+ if ( ! is_user_logged_in() ) { // add anti-spam fields only for not logged in users
36
+ $antispam_form_part = '
37
  <p class="comment-form-anti-spam" style="clear:both;">
38
  <label for="anti-spam-q">Current <span style="display:none;">month</span> <span style="display:inline;">ye@r</span> <span style="display:none;">day</span></label> <span class="required">*</span>
39
  <input type="hidden" name="anti-spam-a" id="anti-spam-a" value="'.date('Y').'" />
40
  <input type="text" name="anti-spam-q" id="anti-spam-q" size="30" value="1980" />
41
  </p>
42
  '; // question (hidden with js) [aria-required="true" required="required"]
43
+ $antispam_form_part .= '
44
  <p class="comment-form-anti-spam-2" style="display:none;">
45
  <label for="anti-spam-e-email-url">Leave this field empty</label> <span class="required">*</span>
46
  <input type="text" name="anti-spam-e-email-url" id="anti-spam-e-email-url" size="30" value=""/>
47
  </p>
48
  '; // empty field (hidden with css)
49
+ echo $antispam_form_part;
50
+ }
51
  }
52
+ add_action( 'comment_form', 'antispam_form_part' ); // add anti-spam input to the comment form
 
53
  endif; // end of antispam_form_part()
54
 
55
 
56
  if ( ! function_exists( 'antispam_check_comment' ) ) :
57
+ function antispam_check_comment( $commentdata ) {
58
+ global $antispam_send_spam_comment_to_admin, $antispam_allow_trackbacks;
59
+ extract( $commentdata );
60
 
61
+ $antispam_pre_error_message = '<p><strong><a href="javascript:window.history.back()">Go back</a></strong> and try again.</p>';
62
+ $antispam_error_message = '';
63
 
64
+ if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
65
+ $antispam_admin_email = get_option('admin_email'); // admin email
66
 
67
+ $post = get_post( $comment->comment_post_ID );
68
+ $antispam_message_spam_info = 'Spam for post: "'.$post->post_title.'"' . "\r\n";
69
+ $antispam_message_spam_info .= get_permalink( $comment->comment_post_ID ) . "\r\n\r\n";
70
 
71
+ $antispam_message_spam_info .= 'IP : ' . $_SERVER['REMOTE_ADDR'] . "\r\n";
72
+ $antispam_message_spam_info .= 'User agent : ' . $_SERVER['HTTP_USER_AGENT'] . "\r\n";
73
+ $antispam_message_spam_info .= 'Referer : ' . $_SERVER['HTTP_REFERER'] . "\r\n\r\n";
74
 
75
+ $antispam_message_spam_info .= 'Comment data:'."\r\n"; // lets see what comment data spammers try to submit
76
+ foreach ( $commentdata as $key => $value ) {
77
+ $antispam_message_spam_info .= '$commentdata['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
78
+ }
79
+ $antispam_message_spam_info .= "\r\n\r\n";
80
 
81
+ $antispam_message_spam_info .= 'Post vars:'."\r\n"; // lets see what post vars spammers try to submit
82
+ foreach ( $_POST as $key => $value ) {
83
+ $antispam_message_spam_info .= '$_POST['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
84
+ }
85
+ $antispam_message_spam_info .= "\r\n\r\n";
86
 
87
+ $antispam_message_spam_info .= 'Cookie vars:'."\r\n"; // lets see what cookie vars spammers try to submit
88
+ foreach ( $_COOKIE as $key => $value ) {
89
+ $antispam_message_spam_info .= '$_COOKIE['.$key. '] = '.$value."\r\n"; // .chr(13).chr(10)
90
+ }
91
+ $antispam_message_spam_info .= "\r\n\r\n";
92
 
93
+ $antispam_message_append = '-----------------------------'."\r\n";
94
+ $antispam_message_append .= 'This is spam comment rejected by Anti-spam plugin. wordpress.org/plugins/anti-spam/' . "\r\n";
95
+ $antispam_message_append .= 'You may edit "anti-spam.php" file and disable this notification.' . "\r\n";
96
+ $antispam_message_append .= 'You should find "$antispam_send_spam_comment_to_admin" and make it equal to "false".' . "\r\n";
97
+ }
98
 
99
+ if ( ! is_user_logged_in() && $comment_type != 'pingback' && $comment_type != 'trackback' ) { // logged in user is not a spammer
100
+ $spam_flag = false;
101
 
102
+ if ( trim( $_POST['anti-spam-q'] ) != date('Y') ) { // answer is wrong - maybe spam
103
+ $spam_flag = true;
104
+ if ( empty( $_POST['anti-spam-q'] ) ) { // empty answer - maybe spam
105
+ $antispam_error_message .= 'Error: empty answer. ['.$_POST['anti-spam-q'].']<br> ';
106
+ } else {
107
+ $antispam_error_message .= 'Error: answer is wrong. ['.$_POST['anti-spam-q'].']<br> ';
108
+ }
109
  }
110
+ if ( ! empty( $_POST['anti-spam-e-email-url'] ) ) { // field is not empty - maybe spam
111
+ $spam_flag = true;
112
+ $antispam_error_message .= 'Error: field should be empty. ['.$_POST['anti-spam-e-email-url'].']<br> ';
113
+ }
114
+ if ( $spam_flag ) { // if we have spam
115
+ if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
 
116
 
117
+ $antispam_subject = 'Spam comment on site ['.get_bloginfo( 'name' ).']'; // email subject
118
+ $antispam_message = '';
119
 
120
+ $antispam_message .= $antispam_error_message . "\r\n\r\n";
121
 
122
+ $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data
123
 
124
+ $antispam_message .= $antispam_message_append;
125
 
126
+ @wp_mail( $antispam_admin_email, $antispam_subject, $antispam_message ); // send spam comment to admin email
127
+ }
128
+ wp_die( $antispam_pre_error_message . $antispam_error_message ); // die - do not send comment and show errors
129
  }
 
130
  }
 
131
 
132
+ if ( ! $antispam_allow_trackbacks ) { // if trackbacks are blocked (pingbacks are alowed)
133
+ if ( $comment_type == 'trackback' ) { // if trackbacks ( || $comment_type == 'pingback' )
134
+ $antispam_error_message .= 'Error: trackbacks are disabled.<br> ';
135
+ if ( $antispam_send_spam_comment_to_admin ) { // if sending email to admin is enabled
136
+ $antispam_subject = 'Spam trackback on site ['.get_bloginfo( 'name' ).']'; // email subject
137
 
138
+ $antispam_message = '';
139
 
140
+ $antispam_message .= $antispam_error_message . "\r\n\r\n";
141
 
142
+ $antispam_message .= $antispam_message_spam_info; // spam comment, post, cookie and other data
143
 
144
+ $antispam_message .= $antispam_message_append;
145
 
146
+ @wp_mail( $antispam_admin_email, $antispam_subject, $antispam_message ); // send trackback comment to admin email
147
+ }
148
+ wp_die( $antispam_pre_error_message . $antispam_error_message ); // die - do not send trackback
149
  }
 
150
  }
 
151
 
152
+ return $commentdata; // if comment does not looks like spam
153
+ }
154
 
155
+ if ( ! is_admin() ) {
156
+ add_filter( 'preprocess_comment', 'antispam_check_comment', 1 );
157
+ }
158
  endif; // end of antispam_check_comment()
159
 
160
 
161
  if ( ! function_exists( 'antispam_plugin_meta' ) ) :
162
+ function antispam_plugin_meta( $links, $file ) { // add 'Plugin page' and 'Donate' links to plugin meta row
163
+ if ( strpos( $file, 'anti-spam.php' ) !== false ) {
164
+ $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/wordpress/plugins/anti-spam/" title="Plugin page">' . __('Anti-spam') . '</a>' ) );
165
+ $links = array_merge( $links, array( '<a href="http://web-profile.com.ua/donate/" title="Support the development">' . __('Donate') . '</a>' ) );
166
+ }
167
+ return $links;
168
  }
169
+ add_filter( 'plugin_row_meta', 'antispam_plugin_meta', 10, 2 );
 
 
170
  endif; // end of antispam_plugin_meta()
js/anti-spam.js CHANGED
@@ -1,11 +1,31 @@
1
  /*
2
  Anti-spam plugin
3
  No spam in comments. No captcha.
4
- wordpress.org/extend/plugins/anti-spam/
5
  */
6
 
7
  jQuery(function($){
 
8
  $('.comment-form-anti-spam, .comment-form-anti-spam-2').hide(); // hide inputs from users
9
  var answer = $('.comment-form-anti-spam input#anti-spam-a').val(); // get answer
10
  $('.comment-form-anti-spam input#anti-spam-q').val( answer ); // set answer into other input
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  });
1
  /*
2
  Anti-spam plugin
3
  No spam in comments. No captcha.
4
+ wordpress.org/plugins/anti-spam/
5
  */
6
 
7
  jQuery(function($){
8
+
9
  $('.comment-form-anti-spam, .comment-form-anti-spam-2').hide(); // hide inputs from users
10
  var answer = $('.comment-form-anti-spam input#anti-spam-a').val(); // get answer
11
  $('.comment-form-anti-spam input#anti-spam-q').val( answer ); // set answer into other input
12
+
13
+ if ( $('#comments form input#anti-spam-q').length == 0 ) { // anti-spam input does not exist (could be because of cache or because theme does not use 'comment_form' action)
14
+ var current_date = new Date();
15
+ var current_year = current_date.getFullYear();
16
+ $('#comments form').append('<input type="hidden" name="anti-spam-q" id="anti-spam-q" value="'+current_year+'" />'); // add whole input with answer via javascript to comment form
17
+ }
18
+
19
+ if ( $('#respond form input#anti-spam-q').length == 0 ) { // similar, just in case (used because user could bot have #comments)
20
+ var current_date = new Date();
21
+ var current_year = current_date.getFullYear();
22
+ $('#respond form').append('<input type="hidden" name="anti-spam-q" id="anti-spam-q" value="'+current_year+'" />'); // add whole input with answer via javascript to comment form
23
+ }
24
+
25
+ if ( $('form#commentform input#anti-spam-q').length == 0 ) { // similar, just in case (used because user could bot have #respond)
26
+ var current_date = new Date();
27
+ var current_year = current_date.getFullYear();
28
+ $('form#commentform').append('<input type="hidden" name="anti-spam-q" id="anti-spam-q" value="'+current_year+'" />'); // add whole input with answer via javascript to comment form
29
+ }
30
+
31
  });
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://web-profile.com.ua/donate/
4
  Tags: spam, spammer, spammers, comment, comments, antispam, anti-spam, block-spam, spamfree, spam-free, spambot, spam-bot, bot
5
  Requires at least: 3.0
6
  Tested up to: 3.5.1
7
- Stable tag: 1.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -22,12 +22,12 @@ Anti-spam plugin blocks spam in comments automatically, invisibly for users and
22
  * **no options**, because it is great to forget about spam completely
23
 
24
  Plugin is easy to use: just install it and it just works.
25
- Need [more info about the plugin](http://wordpress.org/extend/plugins/anti-spam/faq/)?
26
 
27
- = Useful plugins: =
28
- * ["Page-list" - show list of pages with shortcodes](http://wordpress.org/extend/plugins/page-list/ "list of pages with shortcodes")
29
- * ["Iframe" - embed iframe with shortcode](http://wordpress.org/extend/plugins/iframe/ "embed iframe")
30
- * ["Filenames to latin" - sanitize filenames to latin during upload](http://wordpress.org/extend/plugins/filenames-to-latin/ "sanitize filenames to latin")
31
 
32
  == Installation ==
33
 
@@ -60,6 +60,10 @@ So trackbacks are blocked by default but pingbacks are enabled. You may enable t
60
  Edit [anti-spam.php](http://plugins.trac.wordpress.org/browser/anti-spam/trunk/anti-spam.php) file and find "$antispam_allow_trackbacks" and make it "true".
61
  You may read more about the [difference between trackbacks and pingbacks](http://web-profile.com.ua/web/trackback-vs-pingback/).
62
 
 
 
 
 
63
  = Not enough information about the plugin? =
64
 
65
  You may check out the [source code of the plugin](http://plugins.trac.wordpress.org/browser/anti-spam/trunk/anti-spam.php).
@@ -74,6 +78,9 @@ Do not order products from spam. If spam will be less effective than spammers wi
74
 
75
  == Changelog ==
76
 
 
 
 
77
  = 1.6 - 2013-05-05 =
78
  * add some more debug info in errors text
79
 
@@ -94,4 +101,4 @@ Do not order products from spam. If spam will be less effective than spammers wi
94
  * sending answer from server to client into hidden field (because client year and server year could mismatch)
95
 
96
  = 1.0 - 2012-09-06 =
97
- * initial release
4
  Tags: spam, spammer, spammers, comment, comments, antispam, anti-spam, block-spam, spamfree, spam-free, spambot, spam-bot, bot
5
  Requires at least: 3.0
6
  Tested up to: 3.5.1
7
+ Stable tag: 1.7
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
22
  * **no options**, because it is great to forget about spam completely
23
 
24
  Plugin is easy to use: just install it and it just works.
25
+ Need [more info about the plugin](http://wordpress.org/plugins/anti-spam/faq/)?
26
 
27
+ = Useful: =
28
+ * ["Page-list" - show list of pages with shortcodes](http://wordpress.org/plugins/page-list/ "list of pages with shortcodes")
29
+ * ["Iframe" - embed iframe with shortcode](http://wordpress.org/plugins/iframe/ "embed iframe")
30
+ * ["activetab" - responsive light theme](http://wordpress.org/themes/activetab "responsive light theme")
31
 
32
  == Installation ==
33
 
60
  Edit [anti-spam.php](http://plugins.trac.wordpress.org/browser/anti-spam/trunk/anti-spam.php) file and find "$antispam_allow_trackbacks" and make it "true".
61
  You may read more about the [difference between trackbacks and pingbacks](http://web-profile.com.ua/web/trackback-vs-pingback/).
62
 
63
+ = And one more thing... =
64
+
65
+ If site has caching plugin enabled and cache is not cleared or if theme does not use 'comment_form' action - Anti-spam plugin does not worked. So in new version of the plugin now whole input added via javascript if it does not exist in html of the comments form.
66
+
67
  = Not enough information about the plugin? =
68
 
69
  You may check out the [source code of the plugin](http://plugins.trac.wordpress.org/browser/anti-spam/trunk/anti-spam.php).
78
 
79
  == Changelog ==
80
 
81
+ = 1.7 - 2013-05-31 =
82
+ * if site has caching plugin enabled and cache is not cleared or if theme does not use 'comment_form' action - Anti-spam plugin does not worked; so now whole input added via javascript if it does not exist in html
83
+
84
  = 1.6 - 2013-05-05 =
85
  * add some more debug info in errors text
86
 
101
  * sending answer from server to client into hidden field (because client year and server year could mismatch)
102
 
103
  = 1.0 - 2012-09-06 =
104
+ * initial release