Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.20

Version Description

2015-08-15 = * Fixed anti-spam stats in admin bar - now statistics updates every hour * Fixed issue with skipping spam submissions * Added some PHP-constants for advanced users - CLEANTALK_AJAX_USE_BUFFER and CLEANTALK_AJAX_USE_FOOTER_HEADER can be defined to true or false in wp-config.php to control method, which will be used for injection of AJAX script.

Download this release

Release Info

Developer shagimuratov
Plugin Icon 128x128 Spam protection, AntiSpam, FireWall by CleanTalk
Version 5.20
Comparing to
See all releases

Code changes from version 5.19 to 5.20

cleantalk-admin.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
 
3
  $ct_plugin_basename = 'cleantalk-spam-protect/cleantalk.php';
 
 
4
 
5
  if(isset($_GET['close_notice']))
6
  {
@@ -318,7 +320,7 @@ function ct_add_admin_menu( $wp_admin_bar ) {
318
  //$ct_data=ct_get_data();
319
  $args = array(
320
  'id' => 'ct_parent_node',
321
- 'title' => '<img src="' . plugin_dir_url(__FILE__) . 'inc/images/logo_small1.png" alt="" height="" style="margin-top:9px;" /><a href="#" class="ab-item alignright" title="allowed / blocked" alt="allowed / blocked"><span class="ab-label" id="ct_stats"></span></a>'
322
  );
323
  $wp_admin_bar->add_node( $args );
324
 
@@ -424,6 +426,8 @@ function ct_section_settings_autodel() {
424
  */
425
  function ct_input_apikey() {
426
  global $ct_options, $ct_data, $ct_notice_online_label;
 
 
427
 
428
  echo "<script src='".plugins_url( 'cleantalk-admin.js', __FILE__ )."'></script>\n";
429
 
1
  <?php
2
 
3
  $ct_plugin_basename = 'cleantalk-spam-protect/cleantalk.php';
4
+ $ct_options=ct_get_options();
5
+ $ct_data=ct_get_data();
6
 
7
  if(isset($_GET['close_notice']))
8
  {
320
  //$ct_data=ct_get_data();
321
  $args = array(
322
  'id' => 'ct_parent_node',
323
+ 'title' => '<img src="' . plugin_dir_url(__FILE__) . 'inc/images/logo_small1.png" alt="" height="" style="margin-top:9px;" /><a href="#" class="ab-item alignright" title="allowed / blocked" alt="allowed / blocked"><span class="ab-label" id="ct_stats"><span>0</span> / <span>0</span></span></a>'
324
  );
325
  $wp_admin_bar->add_node( $args );
326
 
426
  */
427
  function ct_input_apikey() {
428
  global $ct_options, $ct_data, $ct_notice_online_label;
429
+ $ct_options=ct_get_options();
430
+ $ct_data=ct_get_data();
431
 
432
  echo "<script src='".plugins_url( 'cleantalk-admin.js', __FILE__ )."'></script>\n";
433
 
cleantalk-ajax.php CHANGED
@@ -83,28 +83,16 @@ function ct_get_stats()
83
  check_ajax_referer( 'ct_secret_nonce', 'security' );
84
  global $ct_data;
85
  //$ct_data=ct_get_data();
86
- $t=time();
87
 
88
- if(!isset($ct_data['stat_accepted']))
89
  {
90
- $ct_data['stat_accepted']=0;
91
- $ct_data['stat_blocked']=0;
92
- $ct_data['stat_all']=0;
93
- $ct_data['last_time']=$t;
94
  update_option('cleantalk_data', $ct_data);
95
  }
96
 
97
- $last_time=intval($ct_data['last_time']);
98
- if($t-$last_time>86400)
99
- {
100
- $ct_data['stat_accepted']=0;
101
- $ct_data['stat_blocked']=0;
102
- $ct_data['stat_all']=0;
103
- $ct_data['last_time']=$t;
104
- update_option('cleantalk_data', $ct_data);
105
- }
106
-
107
- $ret=Array('stat_accepted'=>$ct_data['stat_accepted'],'stat_blocked'=>$ct_data['stat_blocked'],'stat_all'=>$ct_data['stat_all']);
108
  print json_encode($ret);
109
  die();
110
  }
83
  check_ajax_referer( 'ct_secret_nonce', 'security' );
84
  global $ct_data;
85
  //$ct_data=ct_get_data();
 
86
 
87
+ if(!isset($ct_data['array_accepted']))
88
  {
89
+ $ct_data['array_accepted']=Array();
90
+ $ct_data['array_blocked']=Array();
91
+ $ct_data['current_hour']=0;
 
92
  update_option('cleantalk_data', $ct_data);
93
  }
94
 
95
+ $ret=Array('stat_accepted'=>@array_sum($ct_data['array_accepted']), 'stat_blocked'=>@array_sum($ct_data['array_blocked']), 'stat_all'=>@array_sum($ct_data['array_accepted']) + @array_sum($ct_data['array_blocked']));
 
 
 
 
 
 
 
 
 
 
96
  print json_encode($ret);
97
  die();
98
  }
cleantalk-comments.php CHANGED
@@ -42,7 +42,7 @@ function ct_show_checkspam_page()
42
  }
43
  ?>
44
  <?php
45
- //print '<button class="button" id="ct_insert_comments">Insert comments</button><br />';
46
  ?>
47
 
48
  <div id="ct_working_message" style="margin:auto;padding:3px;width:70%;border:2px dotted gray;display:none;background:#ffff99;">
@@ -237,26 +237,28 @@ function ct_ajax_check_comments()
237
 
238
  $args_unchecked = array(
239
  'meta_query' => array(
240
- 'relation' => 'AND',
241
  Array(
242
  'key' => 'ct_checked',
243
  'value' => '1',
244
  'compare' => 'NOT EXISTS'
245
  ),
246
- Array(
247
  'key' => 'ct_hash',
248
  'value' => '1',
249
  'compare' => 'NOT EXISTS'
250
- )
251
  ),
252
- 'number'=>500
 
253
  );
254
 
255
  $u=get_comments($args_unchecked);
256
  $u=array_slice($u,0,500);
257
  if(sizeof($u)>0)
258
  {
259
- //print_r($unchecked);
 
260
  $data=Array();
261
  for($i=0;$i<sizeof($u);$i++)
262
  {
@@ -321,7 +323,7 @@ function ct_ajax_info_comments()
321
  'compare' => 'NUMERIC'
322
  )
323
  ),
324
- 'count'=>true,
325
  );
326
 
327
  $cnt_spam=get_comments($args_spam);
@@ -330,6 +332,7 @@ function ct_ajax_info_comments()
330
  'meta_query' => array(
331
  Array(
332
  'key' => 'ct_hash',
 
333
  'compare' => 'EXISTS'
334
  )
335
  ),
@@ -339,6 +342,7 @@ function ct_ajax_info_comments()
339
  'meta_query' => array(
340
  Array(
341
  'key' => 'ct_checked',
 
342
  'compare' => 'EXISTS'
343
  )
344
  ),
42
  }
43
  ?>
44
  <?php
45
+ if($_SERVER['REMOTE_ADDR']=='127.0.0.1')print '<button class="button" id="ct_insert_comments">Insert comments</button><br />';
46
  ?>
47
 
48
  <div id="ct_working_message" style="margin:auto;padding:3px;width:70%;border:2px dotted gray;display:none;background:#ffff99;">
237
 
238
  $args_unchecked = array(
239
  'meta_query' => array(
240
+ //'relation' => 'AND',
241
  Array(
242
  'key' => 'ct_checked',
243
  'value' => '1',
244
  'compare' => 'NOT EXISTS'
245
  ),
246
+ /*Array(
247
  'key' => 'ct_hash',
248
  'value' => '1',
249
  'compare' => 'NOT EXISTS'
250
+ )*/
251
  ),
252
+ 'number'=>500,
253
+ 'status' => 'all'
254
  );
255
 
256
  $u=get_comments($args_unchecked);
257
  $u=array_slice($u,0,500);
258
  if(sizeof($u)>0)
259
  {
260
+ //print_r($u);
261
+ //die();
262
  $data=Array();
263
  for($i=0;$i<sizeof($u);$i++)
264
  {
323
  'compare' => 'NUMERIC'
324
  )
325
  ),
326
+ 'count'=>true
327
  );
328
 
329
  $cnt_spam=get_comments($args_spam);
332
  'meta_query' => array(
333
  Array(
334
  'key' => 'ct_hash',
335
+ 'value'=>'1',
336
  'compare' => 'EXISTS'
337
  )
338
  ),
342
  'meta_query' => array(
343
  Array(
344
  'key' => 'ct_checked',
345
+ 'value'=>'1',
346
  'compare' => 'EXISTS'
347
  )
348
  ),
cleantalk-common.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- $ct_agent_version = 'wordpress-519';
4
  $ct_plugin_name = 'Anti-spam by CleanTalk';
5
  $ct_checkjs_frm = 'ct_checkjs_frm';
6
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
@@ -74,12 +74,6 @@ $ct_post_data_authnet_label = 's2member_pro_authnet_registration';
74
  // Form time load label
75
  $ct_formtime_label = 'ct_formtime';
76
 
77
- // Plugin's options
78
- $ct_options = null;
79
-
80
- // Plugin's data
81
- $ct_data = null;
82
-
83
  // Post without page load
84
  $ct_direct_post = 0;
85
 
@@ -99,6 +93,10 @@ $ct_notice_autokey_label = 'ct_autokey';
99
  // Apikey automatic getting error text
100
  $ct_notice_autokey_value = '';
101
 
 
 
 
 
102
  /**
103
  * Public action 'plugins_loaded' - Loads locale, see http://codex.wordpress.org/Function_Reference/load_plugin_textdomain
104
  */
@@ -132,6 +130,9 @@ function ct_init_session() {
132
  */
133
  function ct_base_call($params = array()) {
134
  global $wpdb, $ct_agent_version, $ct_formtime_label, $ct_options, $ct_data;
 
 
 
135
 
136
  require_once('cleantalk.class.php');
137
 
1
  <?php
2
 
3
+ $ct_agent_version = 'wordpress-520';
4
  $ct_plugin_name = 'Anti-spam by CleanTalk';
5
  $ct_checkjs_frm = 'ct_checkjs_frm';
6
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
74
  // Form time load label
75
  $ct_formtime_label = 'ct_formtime';
76
 
 
 
 
 
 
 
77
  // Post without page load
78
  $ct_direct_post = 0;
79
 
93
  // Apikey automatic getting error text
94
  $ct_notice_autokey_value = '';
95
 
96
+ $ct_options=ct_get_options();
97
+ $ct_data=ct_get_data();
98
+
99
+
100
  /**
101
  * Public action 'plugins_loaded' - Loads locale, see http://codex.wordpress.org/Function_Reference/load_plugin_textdomain
102
  */
130
  */
131
  function ct_base_call($params = array()) {
132
  global $wpdb, $ct_agent_version, $ct_formtime_label, $ct_options, $ct_data;
133
+
134
+ $ct_options=ct_get_options();
135
+ $ct_data=ct_get_data();
136
 
137
  require_once('cleantalk.class.php');
138
 
cleantalk-public.php CHANGED
@@ -1,5 +1,9 @@
1
  <?php
2
 
 
 
 
 
3
  /**
4
  * Init functions
5
  * @return mixed[] Array of options
@@ -7,7 +11,8 @@
7
  function ct_init() {
8
  global $ct_wplp_result_label, $ct_jp_comments, $ct_post_data_label, $ct_post_data_authnet_label, $ct_formtime_label, $ct_direct_post, $ct_options, $ct_data, $ct_check_post_result, $test_external_forms;
9
 
10
- //$ct_options = ct_get_options();
 
11
 
12
  //fix for EPM registration form
13
  if(isset($_POST) && isset($_POST['reg_email']) && shortcode_exists( 'epm_registration_form' ))
@@ -22,7 +27,14 @@ function ct_init() {
22
  $ct_direct_post = 1;
23
  }
24
  } else {
25
- $_SESSION[$ct_formtime_label] = time();
 
 
 
 
 
 
 
26
  }
27
 
28
  if($test_external_forms && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['cleantalk_hidden_method']) && isset($_POST['cleantalk_hidden_action']))
@@ -947,6 +959,10 @@ function ct_test_registration($nickname, $email, $ip){
947
  */
948
  function ct_registration_errors($errors, $sanitized_user_login = null, $user_email = null) {
949
  global $ct_agent_version, $ct_checkjs_register_form, $ct_session_request_id_label, $ct_session_register_ok_label, $bp, $ct_signup_done, $ct_formtime_label, $ct_negative_comment, $ct_options, $ct_data;
 
 
 
 
950
 
951
  // Go out if a registrered user action
952
  if (ct_is_user_enable() === false) {
@@ -1591,7 +1607,8 @@ function ct_contact_form_validate () {
1591
  strpos($_SERVER['REQUEST_URI'],'/checkout/')!==false ||
1592
  strpos($_SERVER['REQUEST_URI'],'/wp-admin/')!==false ||
1593
  strpos($_SERVER['REQUEST_URI'],'wp-login.php')!==false||
1594
- strpos($_SERVER['REQUEST_URI'],'wp-comments-post.php')!==false
 
1595
  )
1596
  ) {
1597
  return null;
@@ -1697,7 +1714,8 @@ function ct_contact_form_validate_postdata () {
1697
  strpos($_SERVER['REQUEST_URI'],'/checkout/')!==false) ||
1698
  strpos($_SERVER['REQUEST_URI'],'/wp-admin/')!==false ||
1699
  strpos($_SERVER['REQUEST_URI'],'wp-login.php')!==false ||
1700
- strpos($_SERVER['REQUEST_URI'],'wp-comments-post.php')!==false
 
1701
  ) {
1702
  return null;
1703
  }
1
  <?php
2
 
3
+ $ct_options=ct_get_options();
4
+ $ct_data=ct_get_data();
5
+
6
+
7
  /**
8
  * Init functions
9
  * @return mixed[] Array of options
11
  function ct_init() {
12
  global $ct_wplp_result_label, $ct_jp_comments, $ct_post_data_label, $ct_post_data_authnet_label, $ct_formtime_label, $ct_direct_post, $ct_options, $ct_data, $ct_check_post_result, $test_external_forms;
13
 
14
+ $ct_options=ct_get_options();
15
+ $ct_data=ct_get_data();
16
 
17
  //fix for EPM registration form
18
  if(isset($_POST) && isset($_POST['reg_email']) && shortcode_exists( 'epm_registration_form' ))
27
  $ct_direct_post = 1;
28
  }
29
  } else {
30
+ /*if(isset($_SERVER['HTTP_REFERER']) && stripos($_SERVER['HTTP_REFERER'],'preview')!==false)
31
+ {
32
+ //do nothing
33
+ }
34
+ else
35
+ {*/
36
+ $_SESSION[$ct_formtime_label] = time();
37
+ //}
38
  }
39
 
40
  if($test_external_forms && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['cleantalk_hidden_method']) && isset($_POST['cleantalk_hidden_action']))
959
  */
960
  function ct_registration_errors($errors, $sanitized_user_login = null, $user_email = null) {
961
  global $ct_agent_version, $ct_checkjs_register_form, $ct_session_request_id_label, $ct_session_register_ok_label, $bp, $ct_signup_done, $ct_formtime_label, $ct_negative_comment, $ct_options, $ct_data;
962
+
963
+ $ct_options=ct_get_options();
964
+ $ct_data=ct_get_data();
965
+
966
 
967
  // Go out if a registrered user action
968
  if (ct_is_user_enable() === false) {
1607
  strpos($_SERVER['REQUEST_URI'],'/checkout/')!==false ||
1608
  strpos($_SERVER['REQUEST_URI'],'/wp-admin/')!==false ||
1609
  strpos($_SERVER['REQUEST_URI'],'wp-login.php')!==false||
1610
+ strpos($_SERVER['REQUEST_URI'],'wp-comments-post.php')!==false ||
1611
+ @strpos($_SERVER['HTTP_REFERER'],'/wp-admin/')!==false
1612
  )
1613
  ) {
1614
  return null;
1714
  strpos($_SERVER['REQUEST_URI'],'/checkout/')!==false) ||
1715
  strpos($_SERVER['REQUEST_URI'],'/wp-admin/')!==false ||
1716
  strpos($_SERVER['REQUEST_URI'],'wp-login.php')!==false ||
1717
+ strpos($_SERVER['REQUEST_URI'],'wp-comments-post.php')!==false ||
1718
+ @strpos($_SERVER['HTTP_REFERER'],'/wp-admin/')!==false
1719
  ) {
1720
  return null;
1721
  }
cleantalk.php CHANGED
@@ -3,13 +3,31 @@
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org
5
  Description: Max power, all-in-one, captcha less, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
6
- Version: 5.19
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
  */
10
- $cleantalk_plugin_version='5.19';
11
  $cleantalk_executed=false;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  if(!defined('CLEANTALK_PLUGIN_DIR')){
14
  define('CLEANTALK_PLUGIN_DIR', plugin_dir_path(__FILE__));
15
  global $ct_options, $ct_data;
@@ -72,9 +90,15 @@ if(!defined('CLEANTALK_PLUGIN_DIR')){
72
  stripos($_SERVER['REQUEST_URI'],'.xml')===false &&
73
  stripos($_SERVER['REQUEST_URI'],'.xsl')===false)
74
  {
75
- add_action('wp_loaded', 'ct_add_nocache_script', 1);
76
- add_action('wp_footer', 'ct_add_nocache_script_footer', 1);
77
- add_action('wp_head', 'ct_add_nocache_script_header', 1);
 
 
 
 
 
 
78
  add_action( 'wp_ajax_nopriv_ct_get_cookie', 'ct_get_cookie',1 );
79
  add_action( 'wp_ajax_ct_get_cookie', 'ct_get_cookie',1 );
80
  }
@@ -173,38 +197,32 @@ function ct_add_event($event_type)
173
  {
174
  global $ct_data,$cleantalk_executed;
175
  $ct_data = ct_get_data();
176
- $t=time();
177
- if($event_type=='yes')
178
  {
179
- @$ct_data['stat_accepted']++;
 
 
180
  }
181
- if($event_type=='no')
 
 
182
  {
183
- @$ct_data['stat_blocked']++;
 
 
184
  }
185
- $ct_data['stat_all']++;
186
 
187
- $t=time();
188
-
189
- if(!isset($ct_data['stat_accepted']))
190
  {
191
- $ct_data['stat_accepted']=0;
192
- $ct_data['stat_blocked']=0;
193
- $ct_data['stat_all']=0;
194
- $ct_data['last_time']=$t;
195
- update_option('cleantalk_data', $ct_data);
196
  }
197
-
198
- $last_time=intval($ct_data['last_time']);
199
- if($t-$last_time>86400)
200
  {
201
- $ct_data['stat_accepted']=0;
202
- $ct_data['stat_blocked']=0;
203
- $ct_data['stat_all']=0;
204
- $ct_data['last_time']=$t;
205
- update_option('cleantalk_data', $ct_data);
206
  }
207
 
 
208
  update_option('cleantalk_data', $ct_data);
209
  $cleantalk_executed=true;
210
  }
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org
5
  Description: Max power, all-in-one, captcha less, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
6
+ Version: 5.20
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
  */
10
+ $cleantalk_plugin_version='5.20';
11
  $cleantalk_executed=false;
12
 
13
+ if(defined('CLEANTALK_AJAX_USE_BUFFER'))
14
+ {
15
+ $cleantalk_use_buffer=CLEANTALK_AJAX_USE_BUFFER;
16
+ }
17
+ else
18
+ {
19
+ $cleantalk_use_buffer=true;
20
+ }
21
+
22
+ if(defined('CLEANTALK_AJAX_USE_FOOTER_HEADER'))
23
+ {
24
+ $cleantalk_use_footer_header=CLEANTALK_AJAX_USE_FOOTER_HEADER;
25
+ }
26
+ else
27
+ {
28
+ $cleantalk_use_footer_header=true;
29
+ }
30
+
31
  if(!defined('CLEANTALK_PLUGIN_DIR')){
32
  define('CLEANTALK_PLUGIN_DIR', plugin_dir_path(__FILE__));
33
  global $ct_options, $ct_data;
90
  stripos($_SERVER['REQUEST_URI'],'.xml')===false &&
91
  stripos($_SERVER['REQUEST_URI'],'.xsl')===false)
92
  {
93
+ if($cleantalk_use_buffer)
94
+ {
95
+ add_action('wp_loaded', 'ct_add_nocache_script', 1);
96
+ }
97
+ if($cleantalk_use_footer_header)
98
+ {
99
+ add_action('wp_footer', 'ct_add_nocache_script_footer', 1);
100
+ add_action('wp_head', 'ct_add_nocache_script_header', 1);
101
+ }
102
  add_action( 'wp_ajax_nopriv_ct_get_cookie', 'ct_get_cookie',1 );
103
  add_action( 'wp_ajax_ct_get_cookie', 'ct_get_cookie',1 );
104
  }
197
  {
198
  global $ct_data,$cleantalk_executed;
199
  $ct_data = ct_get_data();
200
+
201
+ if(!isset($ct_data['array_accepted']))
202
  {
203
+ $ct_data['array_accepted']=Array();
204
+ $ct_data['array_blocked']=Array();
205
+ $ct_data['current_hour']=0;
206
  }
207
+
208
+ $current_hour=intval(date('G'));
209
+ if($current_hour!=$ct_data['current_hour'])
210
  {
211
+ $ct_data['current_hour']=$current_hour;
212
+ $ct_data['array_accepted'][$current_hour]=0;
213
+ $ct_data['array_blocked'][$current_hour]=0;
214
  }
 
215
 
216
+ if($event_type=='yes')
 
 
217
  {
218
+ @$ct_data['array_accepted'][$current_hour]++;
 
 
 
 
219
  }
220
+ if($event_type=='no')
 
 
221
  {
222
+ @$ct_data['array_blocked'][$current_hour]++;
 
 
 
 
223
  }
224
 
225
+
226
  update_option('cleantalk_data', $ct_data);
227
  $cleantalk_executed=true;
228
  }
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Anti-Spam by CleanTalk - No Captcha, no comments & registrations spam ===
2
  Contributors: znaeff, shagimuratov, vlad-cleantalk
3
- Tags: anti-spam, antispam, bbpress, buddypress, captcha, capcha, captha, catcha, cf7 spam, comments, contact form spam, signup, spam, spammers, spammy, woocommerce, wordpress spam, booking, order, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, akismet, plugin, contact, recaptcha, google captcha, math, security, login, blacklist, cache, prevent, wordpress
4
  Requires at least: 3.0
5
  Tested up to: 4.3
6
- Stable tag: 5.19
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -22,6 +22,11 @@ No CAPTCHA, no questions, no counting animals, no puzzles, no math and no spam b
22
  1. Stops spam in widgets.
23
  1. Check existing comments for spam.
24
 
 
 
 
 
 
25
  = Comments spam protection =
26
  Supports native WordPress, JetPack comments and any other comments plugins. Plugin moves spam comments to SPAM folder or set option to silent ban spam comments.
27
 
@@ -39,16 +44,17 @@ Plugin blocks spam emails via any themes (built-in) contact forms. With AJAX for
39
 
40
  = Other spam filters =
41
  * WordPress Landing Pages.
 
42
  * Any WordPress form (option 'Custom contact forms'). 
43
 
44
  = Compatible with WordPress cache plugins =
45
  * W3 Total Cache, Quick Cache, WP Fastest Cache, Hyper Cache, WP Super cache and any other cache plugins.
46
 
47
- = Check existing comments for spam =
48
- With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam comments. For use this function, go to WP Console->Comments->Find spam comments.
49
 
50
- = Check existing users for spam =
51
- With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam users. For use this function, go to WP Console->Users->Check for spam.
52
 
53
  = Low false/positive rate =
54
  This plugin uses multiple anti-spam tests to filter spam bots with lower false/positive rate as possible. Multiple anti-spam tests avoid false/positive blocks for real website visitors even if one of the tests failed.
@@ -59,10 +65,6 @@ Service CleanTalk (this plugin is a client application for CleanTalk anti-spam s
59
  = No spam comments, no spam registrations, no spam contact emails, no spam trackbacks. CAPTCHA less anti-spam for WordPress =
60
  Spam is one of the most irritating factors. Spam become every year more and conventional anti-spam can no longer handle all the spam bots. CleanTalk prevents spam and automatically blocks it. You'll be surprised of effective protection against spam.
61
 
62
- = Public reviews =
63
- > Using on WPLift was a great test as we receive huge amounts of spam.
64
- > *Oliver Dale. <a href="http://wplift.com/wordpress-anti-spam-plugin" target="_blank">WPLift.com</a>.*
65
-
66
  = Anti-spam plugin info =
67
  CleanTalk is an anti-spam solution **all in 1 for WordPress** that protects login, comments, contact and WooCommerce forms all at once. You don't need to install separate anti-spam plugins for each form. This allows your blog to work faster and save resources. After installation **you will forget about spam**, CleanTalk plugin will do all the work. You won't have to deal with spam, CleanTalk will do this for you automatically. 
68
 
@@ -202,6 +204,22 @@ $res now contents array with two parameters:
202
  * $res['allow'] - is request allowed (1) or not (0)
203
  * $res['comment'] - comment for our server's decision.
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  == Other notes ==
206
 
207
  = Troubleshooting Guide =
@@ -288,6 +306,11 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
288
  1. Setup Android/iOS app to have push notices when new legitiamte comments/registrations or contactcs appears on the website.
289
 
290
  == Changelog ==
 
 
 
 
 
291
  = 5.19 2015-08-11 =
292
  * New feature: anti-spam checking for registered users
293
  * Fixed issue with AJAX JavaScript anti-spam test.
@@ -715,6 +738,11 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
715
  * First version
716
 
717
  == Upgrade Notice ==
 
 
 
 
 
718
  = 5.19 2015-08-11 =
719
  * New feature: anti-spam checking for registered users
720
  * Fixed issue with AJAX JavaScript checking
1
  === Anti-Spam by CleanTalk - No Captcha, no comments & registrations spam ===
2
  Contributors: znaeff, shagimuratov, vlad-cleantalk
3
+ Tags: anti-spam, antispam, bbpress, buddypress, captcha, capcha, captha, catcha, cf7 spam, comments, contact form spam, signup, spam, spammers, spammy, woocommerce, wordpress spam, booking, order, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, akismet, plugin, contact, recaptcha, google captcha, math, security, login, blacklist, cache, prevent, wordpress, User Frontend, bulk delete, bulk remove
4
  Requires at least: 3.0
5
  Tested up to: 4.3
6
+ Stable tag: 5.20
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
22
  1. Stops spam in widgets.
23
  1. Check existing comments for spam.
24
 
25
+
26
+ = Public reviews =
27
+ > Using on WPLift was a great test as we receive huge amounts of spam.
28
+ > *Oliver Dale. <a href="http://wplift.com/wordpress-anti-spam-plugin" target="_blank">WPLift.com</a>.*
29
+
30
  = Comments spam protection =
31
  Supports native WordPress, JetPack comments and any other comments plugins. Plugin moves spam comments to SPAM folder or set option to silent ban spam comments.
32
 
44
 
45
  = Other spam filters =
46
  * WordPress Landing Pages.
47
+ * WP User Frontend.
48
  * Any WordPress form (option 'Custom contact forms'). 
49
 
50
  = Compatible with WordPress cache plugins =
51
  * W3 Total Cache, Quick Cache, WP Fastest Cache, Hyper Cache, WP Super cache and any other cache plugins.
52
 
53
+ = Check existing comments for spam. Bulk comments removal =
54
+ With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam comments at once. For use this function, go to WP Console->Comments->Find spam comments.
55
 
56
+ = Check existing users for spam. Bulk accounts removal =
57
+ With the help of anti-spam by CleanTalk you can check existing comments, to find and quickly delete spam users at once. For use this function, go to WP Console->Users->Check for spam.
58
 
59
  = Low false/positive rate =
60
  This plugin uses multiple anti-spam tests to filter spam bots with lower false/positive rate as possible. Multiple anti-spam tests avoid false/positive blocks for real website visitors even if one of the tests failed.
65
  = No spam comments, no spam registrations, no spam contact emails, no spam trackbacks. CAPTCHA less anti-spam for WordPress =
66
  Spam is one of the most irritating factors. Spam become every year more and conventional anti-spam can no longer handle all the spam bots. CleanTalk prevents spam and automatically blocks it. You'll be surprised of effective protection against spam.
67
 
 
 
 
 
68
  = Anti-spam plugin info =
69
  CleanTalk is an anti-spam solution **all in 1 for WordPress** that protects login, comments, contact and WooCommerce forms all at once. You don't need to install separate anti-spam plugins for each form. This allows your blog to work faster and save resources. After installation **you will forget about spam**, CleanTalk plugin will do all the work. You won't have to deal with spam, CleanTalk will do this for you automatically. 
70
 
204
  * $res['allow'] - is request allowed (1) or not (0)
205
  * $res['comment'] - comment for our server's decision.
206
 
207
+ = I see two loads of script cleantalk_nocache.js. Why are you use it? =
208
+ This scrupt is using for AJAX JavaScript checking. Different themes use different mechanisms of loading, so we use two method for loading our script. If you absolutely knows what are you doing, you can switch one of methods off be defining constants in your wp-config.php file:
209
+
210
+ define('CLEANTALK_AJAX_USE_BUFFER', false); //false - don't use output buffering to include AJAX script, true - use it
211
+
212
+ or
213
+
214
+ define('CLEANTALK_AJAX_USE_FOOTER_HEADER', false); //false - don't use wp_footer() and wp_header() for including AJAX script, true - use it
215
+
216
+ = Can i add exclusions for some pages of my site? =
217
+ Yes, you can. add in you config.php file, before defining database constants, this string:
218
+
219
+ $cleantalk_url_exclusions = Array('url1', 'url2', 'url3');
220
+
221
+ Now, all pages containg strings 'url1', 'url2', or 'url3' will be excluded from anti-spam checking. Remember, that this option will be not applied in registrations and comment checking - they are always protected from spam.
222
+
223
  == Other notes ==
224
 
225
  = Troubleshooting Guide =
306
  1. Setup Android/iOS app to have push notices when new legitiamte comments/registrations or contactcs appears on the website.
307
 
308
  == Changelog ==
309
+ = 5.20 2015-08-15 =
310
+ * Fixed anti-spam stats in admin bar - now statistics updates every hour
311
+ * Fixed issue with skipping spam submissions
312
+ * Added some PHP-constants for advanced users - CLEANTALK_AJAX_USE_BUFFER and CLEANTALK_AJAX_USE_FOOTER_HEADER can be defined to true or false in wp-config.php to control method, which will be used for injection of AJAX script.
313
+
314
  = 5.19 2015-08-11 =
315
  * New feature: anti-spam checking for registered users
316
  * Fixed issue with AJAX JavaScript anti-spam test.
738
  * First version
739
 
740
  == Upgrade Notice ==
741
+ = 5.20 2015-08-15 =
742
+ * Fixed anti-spam stats in admin bar
743
+ * Fixed issue with skipping spam submissions
744
+ * Added some PHP-constants for advanced users
745
+
746
  = 5.19 2015-08-11 =
747
  * New feature: anti-spam checking for registered users
748
  * Fixed issue with AJAX JavaScript checking
screenshot-1.png CHANGED
Binary file
screenshot-3.png CHANGED
Binary file
screenshot-4.png CHANGED
Binary file