PluginProbe
Loginizer / 1.4.4
Loginizer v1.4.4
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.4.4, at functions.php

337 lines 7.5 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 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
32 }
33
34 if(isset($_SERVER["HTTP_CLIENT_IP"]) && @$loginizer['ip_method'] == 2){
35 $ip = $_SERVER["HTTP_CLIENT_IP"];
36 }
37
38 if(@$loginizer['ip_method'] == 3 && isset($_SERVER[@$loginizer['custom_ip_method']])){
39 $ip = $_SERVER[@$loginizer['custom_ip_method']];
40 }
41
42 // Hacking fix for X-Forwarded-For
43 if(!lz_valid_ip($ip)){
44 return '';
45 }
46
47 return $ip;
48
49 }
50
51 // Execute a select query and return an array
52 function lz_selectquery($query, $array = 0){
53 global $wpdb;
54
55 $result = $wpdb->get_results($query, 'ARRAY_A');
56
57 if(empty($array)){
58 return current($result);
59 }else{
60 return $result;
61 }
62 }
63
64 // Check if an IP is valid
65 function lz_valid_ip($ip){
66
67 // IPv6
68 if(lz_valid_ipv6($ip)){
69 return true;
70 }
71
72 // IPv4
73 if(!ip2long($ip)){
74 return false;
75 }
76
77 return true;
78 }
79
80 function lz_valid_ipv6($ip){
81
82 $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}:))$/';
83
84 if(!preg_match($pattern, $ip)){
85 return false;
86 }
87
88 return true;
89
90 }
91
92 // Check if a field is posted via POST else return default value
93 function lz_optpost($name, $default = ''){
94
95 if(!empty($_POST[$name])){
96 return lz_inputsec(lz_htmlizer(trim($_POST[$name])));
97 }
98
99 return $default;
100 }
101
102 // Check if a field is posted via GET else return default value
103 function lz_optget($name, $default = ''){
104
105 if(!empty($_GET[$name])){
106 return lz_inputsec(lz_htmlizer(trim($_GET[$name])));
107 }
108
109 return $default;
110 }
111
112 // Check if a field is posted via GET or POST else return default value
113 function lz_optreq($name, $default = ''){
114
115 if(!empty($_REQUEST[$name])){
116 return lz_inputsec(lz_htmlizer(trim($_REQUEST[$name])));
117 }
118
119 return $default;
120 }
121
122 // For filling in posted values
123 function lz_POSTval($name, $default = ''){
124
125 return (!empty($_POST) ? (!isset($_POST[$name]) ? '' : $_POST[$name]) : $default);
126
127 }
128
129 function lz_POSTchecked($name, $default = false){
130
131 return (!empty($_POST) ? (isset($_POST[$name]) ? 'checked="checked"' : '') : (!empty($default) ? 'checked="checked"' : ''));
132
133 }
134
135 function lz_POSTselect($name, $value, $default = false){
136
137 if(empty($_POST)){
138 if(!empty($default)){
139 return 'selected="selected"';
140 }
141 }else{
142 if(isset($_POST[$name])){
143 if(trim($_POST[$name]) == $value){
144 return 'selected="selected"';
145 }
146 }
147 }
148
149 }
150
151 function lz_inputsec($string){
152
153 $string = addslashes($string);
154
155 // This is to replace ` which can cause the command to be executed in exec()
156 $string = str_replace('`', '\`', $string);
157
158 return $string;
159
160 }
161
162 function lz_htmlizer($string){
163
164 $string = htmlentities($string, ENT_QUOTES, 'UTF-8');
165
166 preg_match_all('/(&amp;#(\d{1,7}|x[0-9a-fA-F]{1,6});)/', $string, $matches);//r_print($matches);
167
168 foreach($matches[1] as $mk => $mv){
169 $tmp_m = lz_entity_check($matches[2][$mk]);
170 $string = str_replace($matches[1][$mk], $tmp_m, $string);
171 }
172
173 return $string;
174
175 }
176
177 function lz_entity_check($string){
178
179 //Convert Hexadecimal to Decimal
180 $num = ((substr($string, 0, 1) === 'x') ? hexdec(substr($string, 1)) : (int) $string);
181
182 //Squares and Spaces - return nothing
183 $string = (($num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) || $num < 0x20) ? '' : '&#'.$num.';');
184
185 return $string;
186
187 }
188
189 // Check if a checkbox is selected
190 function lz_is_checked($post){
191
192 if(!empty($_POST[$post])){
193 return true;
194 }
195 return false;
196 }
197
198 // Reoort an error
199 function lz_report_error($error = array()){
200
201 if(empty($error)){
202 return true;
203 }
204
205 $error_string = '<b>Please fix the below error(s) :</b> <br />';
206
207 foreach($error as $ek => $ev){
208 $error_string .= '* '.$ev.'<br />';
209 }
210
211 echo '<div id="message" class="error"><p>'
212 . __($error_string, 'loginizer')
213 . '</p></div>';
214 }
215
216 // Report a notice
217 function lz_report_notice($notice = array()){
218
219 global $wp_version;
220
221 if(empty($notice)){
222 return true;
223 }
224
225 // Which class do we have to use ?
226 if(version_compare($wp_version, '3.8', '<')){
227 $notice_class = 'updated';
228 }else{
229 $notice_class = 'updated';
230 }
231
232 $notice_string = '<b>Please check the below notice(s) :</b> <br />';
233
234 foreach($notice as $ek => $ev){
235 $notice_string .= '* '.$ev.'<br />';
236 }
237
238 echo '<div id="message" class="'.$notice_class.'"><p>'
239 . __($notice_string, 'loginizer')
240 . '</p></div>';
241 }
242
243 // Convert an objext to array
244 function lz_objectToArray($d){
245
246 if(is_object($d)){
247 $d = get_object_vars($d);
248 }
249
250 if(is_array($d)){
251 return array_map(__FUNCTION__, $d); // recursive
252 }elseif(is_object($d)){
253 return lz_objectToArray($d);
254 }else{
255 return $d;
256 }
257 }
258
259 // Sanitize variables
260 function lz_sanitize_variables($variables = array()){
261
262 if(is_array($variables)){
263 foreach($variables as $k => $v){
264 $variables[$k] = trim($v);
265 $variables[$k] = escapeshellcmd($v);
266 }
267 }else{
268 $variables = escapeshellcmd(trim($variables));
269 }
270
271 return $variables;
272 }
273
274 // Is multisite ?
275 function lz_is_multisite() {
276
277 if(function_exists('get_site_option') && function_exists('is_multisite') && is_multisite()){
278 return true;
279 }
280
281 return false;
282 }
283
284 // Generate a random string
285 function lz_RandomString($length = 10){
286 $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
287 $charactersLength = strlen($characters);
288 $randomString = '';
289 for($i = 0; $i < $length; $i++){
290 $randomString .= $characters[rand(0, $charactersLength - 1)];
291 }
292 return $randomString;
293 }
294
295 function lz_print($array){
296
297 echo '<pre>';
298 print_r($array);
299 echo '</pre>';
300
301 }
302
303 function lz_cleanpath($path){
304 $path = str_replace('\\\\', '/', $path);
305 $path = str_replace('\\', '/', $path);
306 $path = str_replace('//', '/', $path);
307 return rtrim($path, '/');
308 }
309
310 // Returns the Numeric Value of results Per Page
311 function lz_get_page($get = 'page', $resperpage = 50){
312
313 $resperpage = (!empty($_REQUEST['reslen']) && is_numeric($_REQUEST['reslen']) ? (int) lz_optreq('reslen') : $resperpage);
314
315 if(lz_optget($get)){
316 $pg = (int) lz_optget($get);
317 $pg = $pg - 1;
318 $page = ($pg * $resperpage);
319 $page = ($page <= 0 ? 0 : $page);
320 }else{
321 $page = 0;
322 }
323 return $page;
324 }
325
326 // Replaces the Variables with the supplied ones
327 function lz_lang_vars_name($str, $array){
328
329 foreach($array as $k => $v){
330
331 $str = str_replace('$'.$k, $v, $str);
332
333 }
334
335 return $str;
336
337 }