25 lines
		
	
	
		
			646 B
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			25 lines
		
	
	
		
			646 B
		
	
	
	
		
			PHP
		
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Returns the user's IP address.
 | |
|  * Uses global $user_IP set by Logger plugin if available, else falls back to server variables.
 | |
|  *
 | |
|  * @return string
 | |
|  */
 | |
| function getUserIP() {
 | |
|     global $user_IP;
 | |
|     if (!empty($user_IP)) {
 | |
|         return $user_IP;
 | |
|     }
 | |
|     // Fallback to HTTP headers or REMOTE_ADDR
 | |
|     if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
 | |
|         return $_SERVER['HTTP_CLIENT_IP'];
 | |
|     }
 | |
|     if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 | |
|         // May contain multiple IPs
 | |
|         $parts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 | |
|         return trim($parts[0]);
 | |
|     }
 | |
|     return $_SERVER['REMOTE_ADDR'] ?? '';
 | |
| }
 |