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

342 lines 7.6 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){
135
136 return (!empty($_POST) ? (isset($_POST[$name]) ? 'checked="checked"' : '') : (!empty($default) ? 'checked="checked"' : ''));
137
138 }
139
140 function lz_POSTselect($name, $value, $default = false){
141
142 if(empty($_POST)){
143 if(!empty($default)){
144 return 'selected="selected"';
145 }
146 }else{
147 if(isset($_POST[$name])){
148 if(trim($_POST[$name]) == $value){
149 return 'selected="selected"';
150 }
151 }
152 }
153
154 }
155
156 function lz_inputsec($string){
157
158 $string = addslashes($string);
159
160 // This is to replace ` which can cause the command to be executed in exec()
161 $string = str_replace('`', '\`', $string);
162
163 return $string;
164
165 }
166
167 function lz_htmlizer($string){
168
169 $string = htmlentities($string, ENT_QUOTES, 'UTF-8');
170
171 preg_match_all('/(&amp;#(\d{1,7}|x[0-9a-fA-F]{1,6});)/', $string, $matches);//r_print($matches);
172
173 foreach($matches[1] as $mk => $mv){
174 $tmp_m = lz_entity_check($matches[2][$mk]);
175 $string = str_replace($matches[1][$mk], $tmp_m, $string);
176 }
177
178 return $string;
179
180 }
181
182 function lz_entity_check($string){
183
184 //Convert Hexadecimal to Decimal
185 $num = ((substr($string, 0, 1) === 'x') ? hexdec(substr($string, 1)) : (int) $string);
186
187 //Squares and Spaces - return nothing
188 $string = (($num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) || $num < 0x20) ? '' : '&#'.$num.';');
189
190 return $string;
191
192 }
193
194 // Check if a checkbox is selected
195 function lz_is_checked($post){
196
197 if(!empty($_POST[$post])){
198 return true;
199 }
200 return false;
201 }
202
203 // Reoort an error
204 function lz_report_error($error = array()){
205
206 if(empty($error)){
207 return true;
208 }
209
210 $error_string = '<b>Please fix the below error(s) :</b> <br />';
211
212 foreach($error as $ek => $ev){
213 $error_string .= '* '.$ev.'<br />';
214 }
215
216 echo '<div id="message" class="error"><p>'
217 . __($error_string, 'loginizer')
218 . '</p></div>';
219 }
220
221 // Report a notice
222 function lz_report_notice($notice = array()){
223
224 global $wp_version;
225
226 if(empty($notice)){
227 return true;
228 }
229
230 // Which class do we have to use ?
231 if(version_compare($wp_version, '3.8', '<')){
232 $notice_class = 'updated';
233 }else{
234 $notice_class = 'updated';
235 }
236
237 $notice_string = '<b>Please check the below notice(s) :</b> <br />';
238
239 foreach($notice as $ek => $ev){
240 $notice_string .= '* '.$ev.'<br />';
241 }
242
243 echo '<div id="message" class="'.$notice_class.'"><p>'
244 . __($notice_string, 'loginizer')
245 . '</p></div>';
246 }
247
248 // Convert an objext to array
249 function lz_objectToArray($d){
250
251 if(is_object($d)){
252 $d = get_object_vars($d);
253 }
254
255 if(is_array($d)){
256 return array_map(__FUNCTION__, $d); // recursive
257 }elseif(is_object($d)){
258 return lz_objectToArray($d);
259 }else{
260 return $d;
261 }
262 }
263
264 // Sanitize variables
265 function lz_sanitize_variables($variables = array()){
266
267 if(is_array($variables)){
268 foreach($variables as $k => $v){
269 $variables[$k] = trim($v);
270 $variables[$k] = escapeshellcmd($v);
271 }
272 }else{
273 $variables = escapeshellcmd(trim($variables));
274 }
275
276 return $variables;
277 }
278
279 // Is multisite ?
280 function lz_is_multisite() {
281
282 if(function_exists('get_site_option') && function_exists('is_multisite') && is_multisite()){
283 return true;
284 }
285
286 return false;
287 }
288
289 // Generate a random string
290 function lz_RandomString($length = 10){
291 $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
292 $charactersLength = strlen($characters);
293 $randomString = '';
294 for($i = 0; $i < $length; $i++){
295 $randomString .= $characters[rand(0, $charactersLength - 1)];
296 }
297 return $randomString;
298 }
299
300 function lz_print($array){
301
302 echo '<pre>';
303 print_r($array);
304 echo '</pre>';
305
306 }
307
308 function lz_cleanpath($path){
309 $path = str_replace('\\\\', '/', $path);
310 $path = str_replace('\\', '/', $path);
311 $path = str_replace('//', '/', $path);
312 return rtrim($path, '/');
313 }
314
315 // Returns the Numeric Value of results Per Page
316 function lz_get_page($get = 'page', $resperpage = 50){
317
318 $resperpage = (!empty($_REQUEST['reslen']) && is_numeric($_REQUEST['reslen']) ? (int) lz_optreq('reslen') : $resperpage);
319
320 if(lz_optget($get)){
321 $pg = (int) lz_optget($get);
322 $pg = $pg - 1;
323 $page = ($pg * $resperpage);
324 $page = ($page <= 0 ? 0 : $page);
325 }else{
326 $page = 0;
327 }
328 return $page;
329 }
330
331 // Replaces the Variables with the supplied ones
332 function lz_lang_vars_name($str, $array){
333
334 foreach($array as $k => $v){
335
336 $str = str_replace('$'.$k, $v, $str);
337
338 }
339
340 return $str;
341
342 }