Guest User

Untitled

a guest
Feb 21st, 2026
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. // Toggle ON/OFF
  2. define('IP_POST_PROTECTION', true);
  3.  
  4. // Allowed IPs (single IPs or CIDR ranges)
  5. $allowed_ips = [
  6. '123.123.123.123', // Example single IP
  7. '192.168.1.0/24', // Example range
  8. ];
  9.  
  10. // Only protect POST requests
  11. if (IP_POST_PROTECTION && $_SERVER['REQUEST_METHOD'] === 'POST') {
  12.  
  13. // Get real IP (Cloudflare safe)
  14. $ip = $_SERVER['REMOTE_ADDR'] ?? '';
  15.  
  16. if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
  17. $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
  18. }
  19.  
  20. // Function to check IP or CIDR
  21. function ipInRange($ip, $range) {
  22. if (strpos($range, '/') === false) {
  23. return $ip === $range;
  24. }
  25.  
  26. list($subnet, $bits) = explode('/', $range);
  27. $ip = ip2long($ip);
  28. $subnet = ip2long($subnet);
  29. $mask = -1 << (32 - $bits);
  30. $subnet &= $mask;
  31.  
  32. return ($ip & $mask) === $subnet;
  33. }
  34.  
  35. $allowed = false;
  36.  
  37. foreach ($allowed_ips as $allowed_ip) {
  38. if (ipInRange($ip, $allowed_ip)) {
  39. $allowed = true;
  40. break;
  41. }
  42. }
  43.  
  44. if (!$allowed) {
  45. http_response_code(403);
  46. exit('Forbidden - Your IP is not allowed.');
  47. }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment