PluginProbe
Loginizer / 1.6.3
Loginizer v1.6.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 / functions.php

functions.php in Loginizer 1.6.3, at functions.php

381 lines 8.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 include_once(LOGINIZER_DIR.'/IPv6/IPv6.php');
4
5 // Get the client IP
6 function _lz_getip(){
7 if(isset($_SERVER["REMOTE_ADDR"])){
8 return $_SERVER["REMOTE_ADDR"];
9 }elseif(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
10 return $_SERVER["HTTP_X_FORWARDED_FOR"];
11 }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
12 return $_SERVER["HTTP_CLIENT_IP"];
13 }
14 }
15
16 // Get the client IP
17 function lz_getip(){
18
19 global $loginizer;
20
21 // Just so that we have something
22 $ip = _lz_getip();
23
24 $loginizer['ip_method'] = (int) @$loginizer['ip_method'];
25
26 if(isset($_SERVER["REMOTE_ADDR"])){
27 $ip = $_SERVER["REMOTE_ADDR"];
28 }
29
30 if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && @$loginizer['ip_method'] == 1){
31 if(strpos($_SERVER["HTTP_X_FORWARDED_FOR"], ',')){
32 $temp_ip = explode(',', $_SERVER["HTTP_X_FORWARDED_FOR"]);
33 $ip = trim($temp_ip[0]);
34 }else{
35 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
36 }
37 }
38
39 if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){
40 $ip = $_SERVER["HTTP_CLIENT_IP"];
41 }
42
43 if(@$loginizer['ip_method'] == 3 && isset($_SERVER[@$loginizer['custom_ip_method']])){
44 $ip = $_SERVER[@$loginizer['custom_ip_method']];
45 }
46
47 // Hacking fix for X-Forwarded-For
48 if(!lz_valid_ip($ip)){
49 return '';
50 }
51
52 return $ip;
53
54 }
55
56 // Execute a select query and return an array
57 function lz_selectquery($query, $array = 0){
58 global $wpdb;
59
60 $result = $wpdb->get_results($query, 'ARRAY_A');
61
62 if(empty($array)){
63 return current($result);
64 }else{
65 return $result;
66 }
67 }
68
69 // Check if an IP is valid
70 function lz_valid_ip($ip){
71
72 // IPv6
73 if(lz_valid_ipv6($ip)){
74 return true;
75 }
76
77 // IPv4
78 if(!ip2long($ip)){
79 return false;
80 }
81
82 return true;
83 }
84
85 function lz_valid_ipv6($ip){
86
87 $pattern = '/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/';
88
89 if(!preg_match($pattern, $ip)){
90 return false;
91 }
92
93 return true;
94
95 }
96
97 // Check if a field is posted via POST else return default value
98 function lz_optpost($name, $default = ''){
99
100 if(!empty($_POST[$name])){
101 return lz_inputsec(lz_htmlizer(trim($_POST[$name])));
102 }
103
104 return $default;
105 }
106
107 // Check if a field is posted via GET else return default value
108 function lz_optget($name, $default = ''){
109
110 if(!empty($_GET[$name])){
111 return lz_inputsec(lz_htmlizer(trim($_GET[$name])));
112 }
113
114 return $default;
115 }
116
117 // Check if a field is posted via GET or POST else return default value
118 function lz_optreq($name, $default = ''){
119
120 if(!empty($_REQUEST[$name])){
121 return lz_inputsec(lz_htmlizer(trim($_REQUEST[$name])));
122 }
123
124 return $default;
125 }
126
127 // For filling in posted values
128 function lz_POSTval($name, $default = ''){
129
130 return (!empty($_POST) ? (!isset($_POST[$name]) ? '' : $_POST[$name]) : $default);
131
132 }
133
134 function lz_POSTchecked($name, $default = false, $submit_name = ''){
135
136 if(!empty($submit_name)){
137 $post_to_check = isset($_POST[$submit_name]) ? $_POST[$submit_name] : '';
138 }else{
139 $post_to_check = $_POST;
140 }
141
142 return (!empty($post_to_check) ? (isset($_POST[$name]) ? 'checked="checked"' : '') : (!empty($default) ? 'checked="checked"' : ''));
143
144 }
145
146 function lz_POSTselect($name, $value, $default = false){
147
148 if(empty($_POST)){
149 if(!empty($default)){
150 return 'selected="selected"';
151 }
152 }else{
153 if(isset($_POST[$name])){
154 if(trim($_POST[$name]) == $value){
155 return 'selected="selected"';
156 }
157 }
158 }
159
160 }
161
162 function lz_POSTradio($name, $val, $default = null){
163
164 return (!empty($_POST) ? (@$_POST[$name] == $val ? 'checked="checked"' : '') : (!is_null($default) && $default == $val ? 'checked="checked"' : ''));
165
166 }
167
168 function lz_inputsec($string){
169
170 $string = addslashes($string);
171
172 // This is to replace ` which can cause the command to be executed in exec()
173 $string = str_replace('`', '\`', $string);
174
175 return $string;
176
177 }
178
179 function lz_htmlizer($string){
180
181 $string = htmlentities($string, ENT_QUOTES, 'UTF-8');
182
183 preg_match_all('/(&amp;#(\d{1,7}|x[0-9a-fA-F]{1,6});)/', $string, $matches);//r_print($matches);
184
185 foreach($matches[1] as $mk => $mv){
186 $tmp_m = lz_entity_check($matches[2][$mk]);
187 $string = str_replace($matches[1][$mk], $tmp_m, $string);
188 }
189
190 return $string;
191
192 }
193
194 function lz_entity_check($string){
195
196 //Convert Hexadecimal to Decimal
197 $num = ((substr($string, 0, 1) === 'x') ? hexdec(substr($string, 1)) : (int) $string);
198
199 //Squares and Spaces - return nothing
200 $string = (($num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) || $num < 0x20) ? '' : '&#'.$num.';');
201
202 return $string;
203
204 }
205
206 // Check if a checkbox is selected
207 function lz_is_checked($post){
208
209 if(!empty($_POST[$post])){
210 return true;
211 }
212 return false;
213 }
214
215 // Reoort an error
216 function lz_report_error($error = array()){
217
218 if(empty($error)){
219 return true;
220 }
221
222 $error_string = '<b>Please fix the below error(s) :</b> <br />';
223
224 foreach($error as $ek => $ev){
225 $error_string .= '* '.$ev.'<br />';
226 }
227
228 echo '<div id="message" class="error"><p>'
229 . __($error_string, 'loginizer')
230 . '</p></div>';
231 }
232
233 // Report a notice
234 function lz_report_notice($notice = array()){
235
236 global $wp_version;
237
238 if(empty($notice)){
239 return true;
240 }
241
242 // Which class do we have to use ?
243 if(version_compare($wp_version, '3.8', '<')){
244 $notice_class = 'updated';
245 }else{
246 $notice_class = 'updated';
247 }
248
249 $notice_string = '<b>Please check the below notice(s) :</b> <br />';
250
251 foreach($notice as $ek => $ev){
252 $notice_string .= '* '.$ev.'<br />';
253 }
254
255 echo '<div id="message" class="'.$notice_class.'"><p>'
256 . __($notice_string, 'loginizer')
257 . '</p></div>';
258 }
259
260 // Convert an objext to array
261 function lz_objectToArray($d){
262
263 if(is_object($d)){
264 $d = get_object_vars($d);
265 }
266
267 if(is_array($d)){
268 return array_map(__FUNCTION__, $d); // recursive
269 }elseif(is_object($d)){
270 return lz_objectToArray($d);
271 }else{
272 return $d;
273 }
274 }
275
276 // Sanitize variables
277 function lz_sanitize_variables($variables = array()){
278
279 if(is_array($variables)){
280 foreach($variables as $k => $v){
281 $variables[$k] = trim($v);
282 $variables[$k] = escapeshellcmd($v);
283 }
284 }else{
285 $variables = escapeshellcmd(trim($variables));
286 }
287
288 return $variables;
289 }
290
291 // Is multisite ?
292 function lz_is_multisite() {
293
294 if(function_exists('get_site_option') && function_exists('is_multisite') && is_multisite()){
295 return true;
296 }
297
298 return false;
299 }
300
301 // Generate a random string
302 function lz_RandomString($length = 10){
303 $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
304 $charactersLength = strlen($characters);
305 $randomString = '';
306 for($i = 0; $i < $length; $i++){
307 $randomString .= $characters[rand(0, $charactersLength - 1)];
308 }
309 return $randomString;
310 }
311
312 function lz_print($array){
313
314 echo '<pre>';
315 print_r($array);
316 echo '</pre>';
317
318 }
319
320 function lz_cleanpath($path){
321 $path = str_replace('\\\\', '/', $path);
322 $path = str_replace('\\', '/', $path);
323 $path = str_replace('//', '/', $path);
324 return rtrim($path, '/');
325 }
326
327 // Returns the Numeric Value of results Per Page
328 function lz_get_page($get = 'page', $resperpage = 50){
329
330 $resperpage = (!empty($_REQUEST['reslen']) && is_numeric($_REQUEST['reslen']) ? (int) lz_optreq('reslen') : $resperpage);
331
332 if(lz_optget($get)){
333 $pg = (int) lz_optget($get);
334 $pg = $pg - 1;
335 $page = ($pg * $resperpage);
336 $page = ($page <= 0 ? 0 : $page);
337 }else{
338 $page = 0;
339 }
340 return $page;
341 }
342
343 // Replaces the Variables with the supplied ones
344 function lz_lang_vars_name($str, $array){
345
346 foreach($array as $k => $v){
347
348 $str = str_replace('$'.$k, $v, $str);
349
350 }
351
352 return $str;
353
354 }
355
356 // Check if Loginizer is premium
357 function loginizer_is_premium(){
358 return defined('LOGINIZER_PREMIUM');
359 }
360
361 function loginizer_feature_available($feature = '', $return = 0){
362
363 if(loginizer_is_premium()){
364 return true;
365 }
366
367 $msg = '';
368
369 if(!empty($feature)){
370 $msg .= '<b>'.$feature.'</b> is available in the Pro version of Loginizer. ';
371 }
372
373 $msg .= '<a href="'.LOGINIZER_PRICING_URL.'" target="_blank" style="text-decoration:none; color:green;"><b>Upgrade to Pro</b></a>';
374
375 if(!empty($return)){
376 return $msg;
377 }else{
378 echo '<div style="color:#a94442; background-color:#f2dede; border-color:#ebccd1; padding:15px; margin-bottom:20px; border:1px solid transparent; border-radius:4px;">'.$msg.'</div>';
379 }
380
381 }