PluginProbe
Loginizer / 2.0.3
Loginizer v2.0.3
2.1.0 2.0.9 2.0.8 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 All 74 releases
loginizer / main / settings / recaptcha.php

recaptcha.php in Loginizer 2.0.3, at main/settings/recaptcha.php

725 lines 32.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if(!defined('ABSPATH')){
4 die('Hacking Attempt!');
5 }
6
7 //---------------------
8 // Admin Menu Pro Pages
9 //---------------------
10
11 // Loginizer - reCaptcha Page
12 function loginizer_page_recaptcha(){
13
14 global $loginizer, $lz_error, $lz_env;
15
16 if(!current_user_can('manage_options')){
17 wp_die('Sorry, but you do not have permissions to change settings.');
18 }
19
20 if(!loginizer_is_premium() && count($_POST) > 0){
21 $lz_error['not_in_free'] = __('This feature is not available in the Free version. <a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>', 'loginizer');
22 return loginizer_page_recaptcha_T();
23 }
24
25 /* Make sure post was from this page */
26 if(count($_POST) > 0){
27 check_admin_referer('loginizer-options');
28 }
29
30 // Themes
31 $lz_env['theme']['light'] = 'Light';
32 $lz_env['theme']['dark'] = 'Dark';
33
34 // Langs
35 $lz_env['lang'][''] = 'Auto Detect';
36 $lz_env['lang']['ar'] = 'Arabic';
37 $lz_env['lang']['bg'] = 'Bulgarian';
38 $lz_env['lang']['ca'] = 'Catalan';
39 $lz_env['lang']['zh-CN'] = 'Chinese (Simplified)';
40 $lz_env['lang']['zh-TW'] = 'Chinese (Traditional)';
41 $lz_env['lang']['hr'] = 'Croatian';
42 $lz_env['lang']['cs'] = 'Czech';
43 $lz_env['lang']['da'] = 'Danish';
44 $lz_env['lang']['nl'] = 'Dutch';
45 $lz_env['lang']['en-GB'] = 'English (UK)';
46 $lz_env['lang']['en'] = 'English (US)';
47 $lz_env['lang']['fil'] = 'Filipino';
48 $lz_env['lang']['fi'] = 'Finnish';
49 $lz_env['lang']['fr'] = 'French';
50 $lz_env['lang']['fr-CA'] = 'French (Canadian)';
51 $lz_env['lang']['de'] = 'German';
52 $lz_env['lang']['de-AT'] = 'German (Austria)';
53 $lz_env['lang']['de-CH'] = 'German (Switzerland)';
54 $lz_env['lang']['el'] = 'Greek';
55 $lz_env['lang']['iw'] = 'Hebrew';
56 $lz_env['lang']['hi'] = 'Hindi';
57 $lz_env['lang']['hu'] = 'Hungarain';
58 $lz_env['lang']['id'] = 'Indonesian';
59 $lz_env['lang']['it'] = 'Italian';
60 $lz_env['lang']['ja'] = 'Japanese';
61 $lz_env['lang']['ko'] = 'Korean';
62 $lz_env['lang']['lv'] = 'Latvian';
63 $lz_env['lang']['lt'] = 'Lithuanian';
64 $lz_env['lang']['no'] = 'Norwegian';
65 $lz_env['lang']['fa'] = 'Persian';
66 $lz_env['lang']['pl'] = 'Polish';
67 $lz_env['lang']['pt'] = 'Portuguese';
68 $lz_env['lang']['pt-BR'] = 'Portuguese (Brazil)';
69 $lz_env['lang']['pt-PT'] = 'Portuguese (Portugal)';
70 $lz_env['lang']['ro'] = 'Romanian';
71 $lz_env['lang']['ru'] = 'Russian';
72 $lz_env['lang']['sr'] = 'Serbian';
73 $lz_env['lang']['sk'] = 'Slovak';
74 $lz_env['lang']['sl'] = 'Slovenian';
75 $lz_env['lang']['es'] = 'Spanish';
76 $lz_env['lang']['es-419'] = 'Spanish (Latin America)';
77 $lz_env['lang']['sv'] = 'Swedish';
78 $lz_env['lang']['th'] = 'Thai';
79 $lz_env['lang']['tr'] = 'Turkish';
80 $lz_env['lang']['uk'] = 'Ukrainian';
81 $lz_env['lang']['vi'] = 'Vietnamese';
82
83 // Sizes
84 $lz_env['size']['normal'] = 'Normal';
85 $lz_env['size']['compact'] = 'Compact';
86
87 // Size cloudflare (turnstile)
88 $lz_env['turnstile_size']['normal'] = 'Normal';
89 $lz_env['turnstile_size']['compact'] = 'Compact';
90 $lz_env['turnstile_size']['flexible'] = 'Flexible';
91
92 // reCAPTCHA Domains
93 $lz_env['captcha_domains']['www.google.com'] = 'google.com';
94 $lz_env['captcha_domains']['www.recaptcha.net'] = 'recaptcha.net';
95
96 if(isset($_POST['save_lz'])){
97
98 // Clear captcha
99 if(empty($_POST['captcha_status'])){
100
101 // Save the options
102 update_option('loginizer_captcha', '');
103
104 // Mark as saved
105 $GLOBALS['lz_cleared'] = true;
106
107 }else{
108
109 $option['captcha_status'] = (int) lz_optpost('captcha_status');
110
111 //hcaptcha
112 $option['hcaptcha_secretkey'] = lz_optpost('hcaptcha_secretkey');
113 $option['hcaptcha_sitekey'] = lz_optpost('hcaptcha_sitekey');
114 $option['hcaptcha_lang'] = lz_optpost('hcaptcha_lang');
115 $option['hcaptcha_theme'] = lz_optpost('hcaptcha_theme');
116 $option['hcaptcha_size'] = lz_optpost('hcaptcha_size');
117
118 // Google Captcha
119 $option['captcha_type'] = lz_optpost('captcha_type');
120 $option['captcha_key'] = lz_optpost('captcha_key');
121 $option['captcha_secret'] = lz_optpost('captcha_secret');
122 $option['captcha_theme'] = lz_optpost('captcha_theme');
123 $option['captcha_size'] = lz_optpost('captcha_size');
124 $option['captcha_lang'] = lz_optpost('captcha_lang');
125 $option['captcha_domain'] = lz_optpost('captcha_domain');
126 $option['captcha_score_threshold'] = lz_optpost('captcha_score_threshold');
127 if(!is_numeric($option['captcha_score_threshold']) || $option['captcha_score_threshold'] > '1.0' || $option['captcha_score_threshold'] < '0.0'){
128 $option['captcha_score_threshold'] = '0.5';
129 }
130
131 $option['captcha_disable_btn'] = lz_optpost('captcha_disable_btn'); // Only for v2 reCaptcha Checkbox
132
133 // Cloudflare Turnstil Captcha
134 $option['turn_captcha_key'] = lz_optpost('turn_captcha_key');
135 $option['turn_captcha_secret'] = lz_optpost('turn_captcha_secret');
136 $option['turn_captcha_theme'] = lz_optpost('turn_captcha_theme');
137 $option['turn_captcha_size'] = lz_optpost('turn_captcha_size');
138 $option['turn_captcha_lang'] = lz_optpost('turn_captcha_lang');
139
140 // Math Captcha
141 $option['captcha_text'] = lz_optpost('captcha_text');
142 $option['captcha_time'] = (int) lz_optpost('captcha_time');
143 $option['captcha_words'] = (int) lz_optpost('captcha_words');
144 $option['captcha_add'] = (int) lz_optpost('captcha_add');
145 $option['captcha_subtract'] = (int) lz_optpost('captcha_subtract');
146 $option['captcha_multiply'] = (int) lz_optpost('captcha_multiply');
147 $option['captcha_divide'] = (int) lz_optpost('captcha_divide');
148
149 // Checkboxes
150 $option['captcha_user_hide'] = (int) lz_optpost('captcha_user_hide');
151 $option['captcha_login'] = (int) lz_optpost('captcha_login');
152 $option['captcha_lostpass'] = (int) lz_optpost('captcha_lostpass');
153 $option['captcha_resetpass'] = (int) lz_optpost('captcha_resetpass');
154 $option['captcha_register'] = (int) lz_optpost('captcha_register');
155 $option['captcha_comment'] = (int) lz_optpost('captcha_comment');
156 $option['captcha_wc_checkout'] = (int) lz_optpost('captcha_wc_checkout');
157 $option['captcha_wc_checkout_pos'] = lz_optpost('captcha_wc_checkout_pos');
158
159 // Are we to use Math Captcha ?
160 if(!empty($_POST['captcha_status']) && $_POST['captcha_status'] == 2){
161
162 $option['captcha_no_google'] = 1;
163
164 // Make the checks
165 if(strlen($option['captcha_text']) < 1){
166 $lz_error['captcha_text'] = __('The Captcha key was not submitted', 'loginizer');
167 }
168
169 }else if(!empty($_POST['captcha_status']) && $_POST['captcha_status'] == 3){
170
171 if(strlen($option['hcaptcha_sitekey']) < 32 || strlen($option['hcaptcha_sitekey']) > 50){
172 $lz_error['hcaptcha_sitekey'] = __('The hCAPTCHA key is invalid', 'loginizer');
173 }
174
175 // Is secret valid ?
176 if(strlen($option['hcaptcha_secretkey']) < 32 || strlen($option['hcaptcha_secretkey']) > 50){
177 $lz_error['hcaptcha_secretkey'] = __('The hCAPTCHA secret is invalid', 'loginizer');
178 }
179
180 // Is theme valid ?
181 if(empty($lz_env['theme'][$option['hcaptcha_theme']])){
182 $lz_error['hcaptcha_theme'] = __('The hCaptcha theme is invalid', 'loginizer');
183 }
184
185 // Is size valid ?
186 if(empty($lz_env['size'][$option['hcaptcha_size']])){
187 $lz_error['hcaptcha_size'] = __('The Turnstile size is invalid', 'loginizer');
188 }
189
190 // Is lang valid ?
191 if(empty($lz_env['lang'][$option['turn_captcha_lang']])){
192 $lz_error['turn_captcha_lang'] = __('The Turnstile language is invalid', 'loginizer');
193 }
194
195 }else if(!empty($_POST['captcha_status']) && $_POST['captcha_status'] == 4){
196
197 if(strlen($option['turn_captcha_key']) < 24 || strlen($option['turn_captcha_key']) > 50){
198 $lz_error['turn_captcha_key'] = __('The Turnstile Site key is invalid', 'loginizer');
199 }
200
201 // Is secret valid ?
202 if(strlen($option['turn_captcha_secret']) < 32 || strlen($option['turn_captcha_secret']) > 50){
203 $lz_error['turn_captcha_secret'] = __('The Turnstile secret key is invalid', 'loginizer');
204 }
205
206 // Is theme valid ?
207 if(empty($lz_env['theme'][$option['turn_captcha_theme']])){
208 $lz_error['turn_captcha_theme'] = __('The Turnstile theme is invalid', 'loginizer');
209 }
210
211 // Is size valid ?
212 if(empty($lz_env['turnstile_size'][$option['turn_captcha_size']])){
213 $lz_error['turn_captcha_size'] = __('The Turnstile size is invalid', 'loginizer');
214 }
215
216 // Is lang valid ?
217 if(empty($lz_env['lang'][$option['turn_captcha_lang']])){
218 $lz_error['turn_captcha_lang'] = __('The Turnstile language is invalid', 'loginizer');
219 }
220
221 }else{
222
223 // Make the checks
224 if(strlen($option['captcha_key']) < 32 || strlen($option['captcha_key']) > 50){
225 $lz_error['captcha_key'] = __('The reCAPTCHA key is invalid', 'loginizer');
226 }
227
228 // Is secret valid ?
229 if(strlen($option['captcha_secret']) < 32 || strlen($option['captcha_secret']) > 50){
230 $lz_error['captcha_secret'] = __('The reCAPTCHA secret is invalid', 'loginizer');
231 }
232
233 // Is theme valid ?
234 if(empty($lz_env['theme'][$option['captcha_theme']])){
235 $lz_error['captcha_theme'] = __('The reCAPTCHA theme is invalid', 'loginizer');
236 }
237
238 // Is size valid ?
239 if(empty($lz_env['size'][$option['captcha_size']])){
240 $lz_error['captcha_size'] = __('The reCAPTCHA size is invalid', 'loginizer');
241 }
242
243 // Is lang valid ?
244 if(empty($lz_env['lang'][$option['captcha_lang']])){
245 $lz_error['captcha_lang'] = __('The reCAPTCHA language is invalid', 'loginizer');
246 }
247
248 if(empty($lz_env['captcha_domains'][$option['captcha_domain']])){
249 $lz_error['captcha_domain'] = __('The reCAPTCHA domain is invalid', 'loginizer');
250 }
251
252 }
253
254 // Is there an error ?
255 if(!empty($lz_error)){
256 return loginizer_page_recaptcha_T();
257 }
258
259 // Save the options
260 update_option('loginizer_captcha', $option);
261
262 // Mark as saved
263 $GLOBALS['lz_saved'] = true;
264 }
265
266 }
267
268 // Call the theme
269 loginizer_page_recaptcha_T();
270
271 }
272
273 // Loginizer - reCaptcha Page Theme
274 function loginizer_page_recaptcha_T(){
275
276 global $loginizer, $lz_error, $lz_env;
277
278 // Universal header
279 loginizer_page_header('reCAPTCHA Settings');
280
281 loginizer_feature_available('reCAPTCHA');
282
283 // Saved ?
284 if(!empty($GLOBALS['lz_saved'])){
285 echo '<div id="message" class="updated"><p>'. __('The settings were saved successfully', 'loginizer'). '</p></div><br />';
286 }
287
288 // Cleared ?
289 if(!empty($GLOBALS['lz_cleared'])){
290 echo '<div id="message" class="updated"><p>'. __('reCAPTCHA has been disabled !', 'loginizer'). '</p></div><br />';
291 }
292
293 // Any errors ?
294 if(!empty($lz_error)){
295 lz_report_error($lz_error);echo '<br />';
296 }
297
298 ?>
299
300 <style>
301 input[type="text"], textarea, select {
302 width: 70%;
303 }
304 </style>
305
306 <div id="" class="postbox">
307
308 <div class="postbox-header">
309 <h2 class="hndle ui-sortable-handle">
310 <span><?php echo __('reCAPTCHA Settings', 'loginizer'); ?></span>
311 </h2>
312 </div>
313
314 <div class="inside">
315
316 <form action="" method="post" enctype="multipart/form-data" loginizer-premium-only="1">
317 <?php wp_nonce_field('loginizer-options'); ?>
318 <table class="form-table">
319 <tr>
320 <td scope="row" valign="top" style="width:400px !important;"><label for="captcha_status"><b><?php echo __('Captcha Status', 'loginizer'); ?></b></label></td>
321 <td>
322 <select name="captcha_status" id="captcha_status" onchange="lz_captcha_status();">
323 <?php
324 echo '<option '.lz_POSTselect('captcha_status', 0, (empty($loginizer['captcha_key']) && empty($loginizer['captcha_no_google']) && empty($loginizer['captcha_status']) ? true : false)).' value="0">'.__('Disabled', 'loginizer').'</option>
325 <option '.lz_POSTselect('captcha_status', 1, (!empty($loginizer['captcha_key']) ? true : false)).' value="1">'.__('Google reCAPTCHA', 'loginizer').'</option>
326 <option '.lz_POSTselect('captcha_status', 2, (!empty($loginizer['captcha_no_google']) ? true : false)).' value="2">'.__('Math Captcha', 'loginizer').'</option>
327 <option '.lz_POSTselect('captcha_status', 3, ((!empty($loginizer['captcha_status']) && $loginizer['captcha_status'] == 3) ? true : false)).' value="3">'.__('hCAPTCHA', 'loginizer').'</option>
328 <option '.lz_POSTselect('captcha_status', 4, ((!empty($loginizer['captcha_status']) && $loginizer['captcha_status'] == 4) ? true : false)).' value="4">'.__('Cloudflare Turnstile', 'loginizer').'</option>';
329 ?>
330 </select>
331 </td>
332 </tr>
333
334 <tr class="hcaptcha">
335 <td scope="row" valign="top"><label for="hcaptcha_sitekey"><b><?php echo __('Site Key', 'loginizer'); ?></b></label><br>
336 <?php echo __('Make sure you enter the correct keys as per the reCAPTCHA type selected above', 'loginizer'); ?>
337 </td>
338 <td>
339 <input type="text" size="50" value="<?php echo lz_optpost('hcaptcha_sitekey', (!empty($loginizer['hcaptcha_sitekey']) ? $loginizer['hcaptcha_sitekey'] : '')); ?>" name="hcaptcha_sitekey" id="hcaptcha_sitekey" /><br />
340 <?php echo __('Get the Site Key and Secret Key from <a href="https://www.hcaptcha.com/" target="_blank">hcaptcha</a>', 'loginizer'); ?>
341 </td>
342 </tr>
343
344 <tr class="hcaptcha">
345 <td scope="row" valign="top"><label for="hcaptcha_secretkey"><b><?php echo __('Secret Key', 'loginizer'); ?></b></label></td>
346 <td>
347 <input type="text" size="50" value="<?php echo lz_optpost('hcaptcha_secretkey', (!empty($loginizer['hcaptcha_secretkey']) ? $loginizer['hcaptcha_secretkey'] : '')); ?>" name="hcaptcha_secretkey" id="hcaptcha_secretkey" />
348 </td>
349 </tr>
350 <tr class="hcaptcha">
351 <td scope="row" valign="top"><label for="hcaptcha_theme"><b><?php echo __('Theme', 'loginizer'); ?></b></label></td>
352 <td>
353 <select name="hcaptcha_theme" id="hcaptcha_theme">
354 <?php
355 foreach($lz_env['theme'] as $k => $v){
356 echo '<option '.lz_POSTselect('hcaptcha_theme', $k, ((!empty($loginizer['hcaptcha_theme']) && $loginizer['hcaptcha_theme'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</value>';
357 }
358 ?>
359 </select>
360 </td>
361 </tr>
362 <tr class="hcaptcha">
363 <td scope="row" valign="top"><label for="hcaptcha_lang"><b><?php echo __('Language', 'loginizer'); ?></b></label></td>
364 <td>
365 <select name="hcaptcha_lang" id="hcaptcha_lang">
366 <?php
367 foreach($lz_env['lang'] as $k => $v){
368 echo '<option '.lz_POSTselect('hcaptcha_lang', $k, ((!empty($loginizer['hcaptcha_lang']) && $loginizer['hcaptcha_lang'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_attr($v).'</value>';
369 }
370 ?>
371 </select>
372 </td>
373 </tr>
374
375 <tr class="hcaptcha">
376 <td scope="row" valign="top"><label for="hcaptcha_size"><b><?php echo __('Size', 'loginizer'); ?></b></label></td>
377 <td>
378 <select name="hcaptcha_size" id="hcaptcha_size">
379 <?php
380 foreach($lz_env['size'] as $k => $v){
381 echo '<option '.lz_POSTselect('hcaptcha_size', $k, ((!empty($loginizer['hcaptcha_size']) && $loginizer['hcaptcha_size'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</value>';
382 }
383 ?>
384 </select>
385 </td>
386 </tr>
387
388
389 <tr class="lz_google_cap">
390 <td scope="row" valign="top"><label><b><?php echo __('reCAPTCHA type', 'loginizer'); ?></b></label><br>
391 <?php echo __('Choose the type of reCAPTCHA', 'loginizer'); ?><br />
392 <?php echo __('<a href="https://g.co/recaptcha/sitetypes/" target="_blank">See Site Types for more details</a>', 'loginizer'); ?>
393 </td>
394 <td>
395 <input type="radio" value="v3" onchange="google_recaptcha_type()" <?php echo lz_POSTradio('captcha_type', 'v3', (!empty($loginizer['captcha_type']) ? $loginizer['captcha_type'] : '')); ?> name="captcha_type" id="captcha_type_v3" /> <label for="captcha_type_v3"><?php echo __('reCAPTCHA v3', 'loginizer'); ?></label><br /><br />
396 <input type="radio" value="" onchange="google_recaptcha_type()" <?php echo lz_POSTradio('captcha_type', '', (!empty($loginizer['captcha_type']) ? $loginizer['captcha_type'] : '')); ?> name="captcha_type" id="captcha_type_v2" /> <label for="captcha_type_v2"><?php echo __('reCAPTCHA v2 - Checkbox', 'loginizer'); ?></label><br /><br />
397 <input type="radio" value="v2_invisible" onchange="google_recaptcha_type()" <?php echo lz_POSTradio('captcha_type', 'v2_invisible', (!empty($loginizer['captcha_type']) ? $loginizer['captcha_type'] : '')); ?> name="captcha_type" id="captcha_type_v2_invisible" /> <label for="captcha_type_v2_invisible"><?php echo __('reCAPTCHA v2 - Invisible', 'loginizer'); ?></label><br />
398 </td>
399 </tr>
400 <tr class="lz_google_cap">
401 <td scope="row" valign="top"><label for="captcha_key"><b><?php echo __('Site Key', 'loginizer'); ?></b></label><br>
402 <?php echo __('Make sure you enter the correct keys as per the reCAPTCHA type selected above', 'loginizer'); ?>
403 </td>
404 <td>
405 <input type="text" size="50" value="<?php echo lz_optpost('captcha_key', (!empty($loginizer['captcha_key']) ? $loginizer['captcha_key'] : '')); ?>" name="captcha_key" id="captcha_key" /><br />
406 <?php echo __('Get the Site Key and Secret Key from <a href="https://www.google.com/recaptcha/admin/" target="_blank">Google</a>', 'loginizer'); ?>
407 </td>
408 </tr>
409 <tr class="lz_google_cap">
410 <td scope="row" valign="top"><label for="captcha_secret"><b><?php echo __('Secret Key', 'loginizer'); ?></b></label></td>
411 <td>
412 <input type="text" size="50" value="<?php echo lz_optpost('captcha_secret', (!empty($loginizer['captcha_secret']) ? $loginizer['captcha_secret'] : '')); ?>" name="captcha_secret" id="captcha_secret" />
413 </td>
414 </tr>
415 <tr class="lz_google_cap">
416 <td scope="row" valign="top"><label for="captcha_theme"><b><?php echo __('Theme', 'loginizer'); ?></b></label></td>
417 <td>
418 <select name="captcha_theme" id="captcha_theme">
419 <?php
420 foreach($lz_env['theme'] as $k => $v){
421 echo '<option '.lz_POSTselect('captcha_theme', $k, ((!empty($loginizer['captcha_theme']) && $loginizer['captcha_theme'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</option>';
422 }
423 ?>
424 </select>
425 </td>
426 </tr>
427 <tr class="lz_google_cap">
428 <td scope="row" valign="top"><label for="captcha_lang"><b><?php echo __('Language', 'loginizer'); ?></b></label></td>
429 <td>
430 <select name="captcha_lang" id="captcha_lang">
431 <?php
432 foreach($lz_env['lang'] as $k => $v){
433 echo '<option '.lz_POSTselect('captcha_lang', $k, ((!empty($loginizer['captcha_lang']) && $loginizer['captcha_lang'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</option>';
434 }
435 ?>
436 </select>
437 </td>
438 </tr>
439 <tr class="lz_google_cap lz_google_cap_size">
440 <td scope="row" valign="top"><label for="captcha_size"><b><?php echo __('Size', 'loginizer'); ?></b></label></td>
441 <td>
442 <select name="captcha_size" id="captcha_size">
443 <?php
444 foreach($lz_env['size'] as $k => $v){
445 echo '<option '.lz_POSTselect('captcha_size', $k, ((!empty($loginizer['captcha_size']) && $loginizer['captcha_size'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</option>';
446 }
447 ?>
448 </select>
449 </td>
450 </tr>
451 <tr class="lz_google_cap">
452 <td scope="row" valign="top">
453 <label for="captcha_domain"><b><?php echo __('reCAPTCHA Domain', 'loginizer'); ?></b></label><br>
454 <?php echo __('If Google is not accessible or blocked in your country select other one', 'loginizer'); ?>
455 </td>
456 <td>
457 <select name="captcha_domain" id="captcha_domain">
458 <?php
459 foreach($lz_env['captcha_domains'] as $k => $v){
460 echo '<option '.lz_POSTselect('captcha_domain', $k, ((!empty($loginizer['captcha_domain']) && $loginizer['captcha_domain'] == $k) ? true : false)).' value="'.$k.'">'.$v.($k == 'www.google.com' ? ' '.__('(Default)', 'loginizer') : '').'</option>';
461 }
462 ?>
463 </select>
464 </td>
465 </tr>
466
467 <tr class="lz_google_cap lz_google_cap_v3">
468 <td scope="row" valign="top">
469 <label for="captcha_domain"><b><?php echo __('reCaptcha threshold', 'loginizer'); ?></b></label><br>
470 <?php echo __('Google returns a score between 0.0 and 1.0 — with 0.0 meaning it\'s likely a bot and 1.0 meaning it\'s likely a human. The default threshold is 0.5, but you can change it based on your needs.', 'loginizer'); ?>
471 </td>
472 <td>
473 <input type="number" max="1.0" min="0.0" step="0.1" name="captcha_score_threshold" id="captcha_score_threshold" value="<?php echo (!empty($loginizer['captcha_score_threshold']) ? esc_attr($loginizer['captcha_score_threshold']) : '0.5'); ?>">
474 </select>
475 </td>
476 </tr>
477
478 <tr class="lz_turnstile_cap">
479 <td scope="row" valign="top"><label for="turn_captcha_key"><b><?php echo __('Site Key', 'loginizer'); ?></b></label><br>
480 </td>
481 <td>
482 <input type="text" size="50" value="<?php echo lz_optpost('turn_captcha_key', (!empty($loginizer['turn_captcha_key']) ? $loginizer['turn_captcha_key'] : '')); ?>" name="turn_captcha_key" id="turn_captcha_key" /><br />
483 <?php echo __('Get the Site Key and Secret Key from <a href="https://dash.cloudflare.com/sign-up?to=/:account/turnstile" target="_blank">Cloudflare Turnstile</a>', 'loginizer'); ?>
484 </td>
485 </tr>
486 <tr class="lz_turnstile_cap">
487 <td scope="row" valign="top"><label for="turn_captcha_secret"><b><?php echo __('Secret Key', 'loginizer'); ?></b></label></td>
488 <td>
489 <input type="password" size="50" value="<?php echo lz_optpost('turn_captcha_secret', (!empty($loginizer['turn_captcha_secret']) ? $loginizer['turn_captcha_secret'] : '')); ?>" name="turn_captcha_secret" id="turn_captcha_secret" />
490 </td>
491 </tr>
492 <tr class="lz_turnstile_cap">
493 <td scope="row" valign="top"><label for="turn_captcha_theme"><b><?php echo __('Theme', 'loginizer'); ?></b></label></td>
494 <td>
495 <select name="turn_captcha_theme" id="turn_captcha_theme">
496 <?php
497 foreach($lz_env['theme'] as $k => $v){
498 echo '<option '.lz_POSTselect('turn_captcha_theme', $k, ((!empty($loginizer['turn_captcha_theme']) && $loginizer['turn_captcha_theme'] == $k) ? true : false)).' value="'.esc_attr($k).'">'.esc_html($v).'</option>';
499 }
500 ?>
501 </select>
502 </td>
503 </tr>
504
505 <tr class="lz_turnstile_cap">
506 <td scope="row" valign="top"><label for="turn_captcha_lang"><b><?php echo __('Language', 'loginizer'); ?></b></label></td>
507 <td>
508 <select name="turn_captcha_lang" id="turn_captcha_lang">
509 <?php
510 foreach($lz_env['lang'] as $k => $v){
511 echo '<option '.lz_POSTselect('turn_captcha_lang', $k, ((!empty($loginizer['turn_captcha_lang']) && $loginizer['turn_captcha_lang'] == $k) ? true : false)).' value="'.$k.'">'.$v.'</option>';
512 }
513 ?>
514 </select>
515 </td>
516 </tr>
517 <tr class="lz_turnstile_cap">
518 <td scope="row" valign="top"><label for="turn_captcha_size"><b><?php echo __('Size', 'loginizer'); ?></b></label></td>
519 <td>
520 <select name="turn_captcha_size" id="turn_captcha_size">
521 <?php
522 foreach($lz_env['turnstile_size'] as $k => $v){
523 echo '<option '.lz_POSTselect('turn_captcha_size', $k, ((!empty($loginizer['turn_captcha_size']) && $loginizer['turn_captcha_size'] == $k) ? true : false)).' value="'.$k.'">'.$v.'</option>';
524 }
525 ?>
526 </select>
527 </td>
528 </tr>
529
530 <tr class="lz_math_cap">
531 <td scope="row" valign="top">
532 <label for="captcha_text"><b><?php echo __('Captcha Text', 'loginizer'); ?></b></label><br>
533 <?php echo __('The text to be shown for the Captcha Field', 'loginizer'); ?>
534 </td>
535 <td>
536 <input type="text" size="30" value="<?php echo lz_optpost('captcha_text', (!empty($loginizer['captcha_text']) ? $loginizer['captcha_text'] : '')); ?>" name="captcha_text" id="captcha_text" />
537 </td>
538 </tr>
539 <tr class="lz_math_cap">
540 <td scope="row" valign="top">
541 <label for="captcha_time"><b><?php echo __('Captcha Time', 'loginizer'); ?></b></label><br>
542 <?php echo __('Enter the number of seconds, a user has to enter captcha value.', 'loginizer'); ?>
543 </td>
544 <td>
545 <input type="text" size="30" value="<?php echo lz_optpost('captcha_time', (!empty($loginizer['captcha_time']) ? $loginizer['captcha_time'] : '')); ?>" name="captcha_time" id="captcha_time" />
546 </td>
547 </tr>
548 <tr class="lz_math_cap">
549 <td scope="row" valign="top">
550 <label for="captcha_words"><b><?php echo __('Display Captcha in Words', 'loginizer'); ?></b></label><br>
551 <?php echo __('If selected the Captcha will be displayed in words rather than numbers', 'loginizer'); ?>
552 </td>
553 <td>
554 <input type="checkbox" value="1" name="captcha_words" id="captcha_words" <?php echo lz_POSTchecked('captcha_words', (empty($loginizer['captcha_words']) ? false : true));?> />
555 </td>
556 </tr>
557 <tr class="lz_math_cap">
558 <td scope="row" valign="top" style="vertical-align: top !important;">
559 <label><b><?php echo __('Mathematical operations', 'loginizer'); ?></b></label><br>
560 <?php echo __('The Mathematical operations to use for Captcha', 'loginizer'); ?>
561 </td>
562 <td valign="top">
563 <table class="wp-list-table fixed users" cellpadding="8" cellspacing="1">
564 <?php echo '
565 <tr>
566 <td><label for="captcha_add">'.__('Addition (+)', 'loginizer').'</label></td>
567 <td><input type="checkbox" value="1" name="captcha_add" id="captcha_add" '.lz_POSTchecked('captcha_add', (empty($loginizer['captcha_add']) ? false : true)).' /></td>
568 </tr>
569 <tr>
570 <td><label for="captcha_subtract">'.__('Subtraction (-)', 'loginizer').'</label></td>
571 <td><input type="checkbox" value="1" name="captcha_subtract" id="captcha_subtract" '.lz_POSTchecked('captcha_subtract', (empty($loginizer['captcha_subtract']) ? false : true)).' /></td>
572 </tr>
573 <tr>
574 <td><label for="captcha_multiply">'.__('Multiplication (x)', 'loginizer').'</label></td>
575 <td><input type="checkbox" value="1" name="captcha_multiply" id="captcha_multiply" '.lz_POSTchecked('captcha_multiply', (empty($loginizer['captcha_multiply']) ? false : true)).' /></td>
576 </tr>
577 <tr>
578 <td><label for="captcha_divide">'.__('Division (÷)', 'loginizer').'</label></td>
579 <td><input type="checkbox" value="1" name="captcha_divide" id="captcha_divide" '.lz_POSTchecked('captcha_divide', (empty($loginizer['captcha_divide']) ? false : true)).' /></td>
580 </tr>';
581 ?>
582 </table>
583 </td>
584 </tr>
585 <tr class="lz_cap">
586 <td scope="row" valign="top"><label><b><?php echo __('Show Captcha On', 'loginizer'); ?></b></label></td>
587 <td valign="top">
588 <table class="wp-list-table fixed users" cellpadding="8" cellspacing="1">
589 <?php echo '
590 <tr>
591 <td><label for="captcha_login">'.__('Login Form', 'loginizer').'</label></td>
592 <td><input type="checkbox" value="1" name="captcha_login" id="captcha_login" '.lz_POSTchecked('captcha_login', (empty($loginizer['captcha_login']) ? false : true)).' /></td>
593 </tr>
594 <tr>
595 <td><label for="captcha_lostpass">'.__('Lost Password Form', 'loginizer').'</label></td>
596 <td><input type="checkbox" value="1" name="captcha_lostpass" id="captcha_lostpass" '.lz_POSTchecked('captcha_lostpass', (empty($loginizer['captcha_lostpass']) ? false : true)).' /></td>
597 </tr>
598 <tr>
599 <td><label for="captcha_resetpass">'.__('Reset Password Form', 'loginizer').'</label></td>
600 <td><input type="checkbox" value="1" name="captcha_resetpass" id="captcha_resetpass" '.lz_POSTchecked('captcha_resetpass', (empty($loginizer['captcha_resetpass']) ? false : true)).' /></td>
601 </tr>
602 <tr>
603 <td><label for="captcha_register">'.__('Registration Form', 'loginizer').'</label></td>
604 <td><input type="checkbox" value="1" name="captcha_register" id="captcha_register" '.lz_POSTchecked('captcha_register', (empty($loginizer['captcha_register']) ? false : true)).' /></td>
605 </tr>
606 <tr>
607 <td><label for="captcha_comment">'.__('Comment Form', 'loginizer').'</label></td>
608 <td><input type="checkbox" value="1" name="captcha_comment" id="captcha_comment" '.lz_POSTchecked('captcha_comment', (empty($loginizer['captcha_comment']) ? false : true)).' /></td>
609 </tr>';
610
611 if(!defined('SITEPAD')){
612
613 echo '<tr>
614 <td><label for="captcha_wc_checkout">'.__('WooCommerce Checkout', 'loginizer').'</label></td>
615 <td><input type="checkbox" value="1" name="captcha_wc_checkout" id="captcha_wc_checkout" '.lz_POSTchecked('captcha_wc_checkout', (empty($loginizer['captcha_wc_checkout']) ? false : true)).' /></td>
616 </tr>
617
618 <tr>
619 <td><label for="captcha_wc_checkout_pos">'.__('WooCommerce Checkout Position', 'loginizer').'</label></td>
620 <td>
621 <select value="'.lz_optpost('captcha_wc_checkout_pos').'" name="captcha_wc_checkout_pos" id="captcha_wc_checkout_pos" />
622 <option value="" '.(isset($loginizer['captcha_wc_checkout_pos']) ? selected($loginizer['captcha_wc_checkout_pos'], '', false) : '').'>'.__('Before Payment', 'loginizer').'</option>
623 <option value="before_submit" '.(isset($loginizer['captcha_wc_checkout_pos']) ? selected($loginizer['captcha_wc_checkout_pos'], 'before_submit', false) : '').'>'.__('Before Order Button', 'loginizer').'</option>
624 </select>
625 </td>
626 </tr>';
627 }
628
629 ?>
630 </table>
631 </td>
632 </tr>
633 <tr class="lz_google_cap lz_google_cap_size">
634 <td scope="row" valign="top"><label for="captcha_disable_btn"><b><?php echo __('Disable Login Button', 'loginizer'); ?></b></label></td>
635 <td>
636 <input type="checkbox" value="1" name="captcha_disable_btn" id="captcha_disable_btn" <?php echo lz_POSTchecked('captcha_disable_btn', (empty($loginizer['captcha_disable_btn']) ? false : true)); ?> />
637 </td>
638 </tr>
639 <tr class="lz_cap">
640 <td scope="row" valign="top"><label for="captcha_user_hide"><b><?php echo __('Hide CAPTCHA for logged in Users', 'loginizer'); ?></b></label></td>
641 <td>
642 <input type="checkbox" value="1" name="captcha_user_hide" id="captcha_user_hide" <?php echo lz_POSTchecked('captcha_user_hide', (empty($loginizer['captcha_user_hide']) ? false : true)); ?> />
643 </td>
644 </tr>
645 </table><br />
646 <center><input name="save_lz" class="button button-primary action" value="<?php echo __('Save Settings','loginizer'); ?>" type="submit" /></center>
647 </form>
648
649 </div>
650 </div>
651 <br />
652
653 <script type="text/javascript">
654
655 function lz_captcha_status(){
656
657 var cur_captcha_status = jQuery("#captcha_status option:selected").val();
658
659 if(cur_captcha_status == 1){
660 jQuery(".lz_google_cap").show();
661 jQuery(".lz_math_cap").hide();
662 jQuery('.lz_turnstile_cap').hide();
663 jQuery(".lz_cap").show();
664 google_recaptcha_type();
665 jQuery(".hcaptcha").hide();
666
667 }else if(cur_captcha_status == 2){
668 jQuery(".lz_google_cap").hide();
669 jQuery(".lz_math_cap").show();
670 jQuery('.lz_turnstile_cap').hide();
671 jQuery(".lz_cap").show();
672 jQuery(".hcaptcha").hide();
673
674 }else if(cur_captcha_status == 3){
675 jQuery(".hcaptcha").show();
676 jQuery(".lz_math_cap").hide();
677 jQuery('.lz_turnstile_cap').hide();
678 jQuery(".lz_cap").show();
679 jQuery(".lz_google_cap").hide();
680 }else if(cur_captcha_status == 4){
681 jQuery(".hcaptcha").hide();
682 jQuery(".lz_math_cap").hide();
683 jQuery('.lz_turnstile_cap').show();
684 jQuery(".lz_cap").show();
685 jQuery(".lz_google_cap").hide();
686 }else{
687 jQuery(".hcaptcha").hide();
688 jQuery(".lz_google_cap").hide();
689 jQuery(".lz_math_cap").hide();
690 jQuery('.lz_turnstile_cap').hide();
691 jQuery(".lz_cap").hide();
692 }
693
694 }
695
696 function google_recaptcha_type(){
697
698 var cur_captcha_type = jQuery("input:radio[name='captcha_type']:checked").val();
699
700 if(cur_captcha_type == 'v3' || cur_captcha_type == 'v2_invisible'){
701 if(cur_captcha_type == 'v3'){
702 jQuery(".lz_google_cap_v3").show();
703 } else {
704 jQuery(".lz_google_cap_v3").hide();
705 }
706
707 jQuery(".lz_google_cap_size").hide();
708 }else{
709 jQuery(".lz_google_cap_size").show();
710 jQuery(".lz_google_cap_v3").hide();
711
712 }
713
714 }
715
716 jQuery(document).ready(function(){
717 lz_captcha_status();
718 });
719
720 </script>
721
722 <?php
723 loginizer_page_footer();
724
725 }