access.inc.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. define("WHITE_ACCESS", array(
  3. "user",
  4. "unknow",
  5. "login",
  6. "login-salarie",
  7. "login-control",
  8. "spash-screen",
  9. "maintenance",
  10. "authenticator",
  11. "logout",
  12. "test",
  13. ));
  14. define("OFF_LINE", array(
  15. "authenticator",
  16. "login",
  17. "cron",
  18. ));
  19. // Filtre les IP authorisés à accéder au site
  20. function getUserIP() {
  21. $ip = 'Inconnu';
  22. if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  23. // IP partagée par un proxy
  24. $ip = $_SERVER['HTTP_CLIENT_IP'];
  25. } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  26. // IP du client derrière un proxy
  27. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  28. } else {
  29. // IP du client directement connectée au serveur
  30. $ip = $_SERVER['REMOTE_ADDR'];
  31. }
  32. // Nettoyage des IPs multiples dans le cas de 'HTTP_X_FORWARDED_FOR'
  33. if (strpos($ip, ',') !== false) {
  34. $ip = explode(',', $ip)[0];
  35. }
  36. return $ip;
  37. }
  38. if(!is_null(WHITE_IP)){
  39. if(!in_array(htmlspecialchars(getUserIP()), WHITE_IP)){
  40. header('HTTP/1.0 401 Unauthorized');
  41. header('Content-Type: text/html; charset=utf-8');
  42. echo ' <!DOCTYPE html>
  43. <html lang="fr">
  44. <head>
  45. <meta charset="UTF-8">
  46. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  47. <title>403 Accès Interdit</title>
  48. <style>
  49. body {
  50. font-family: Arial, sans-serif;
  51. background-color: #f8d7da;
  52. color: #721c24;
  53. text-align: center;
  54. padding: 50px;
  55. }
  56. h1 {
  57. font-size: 2em;
  58. }
  59. </style>
  60. </head>
  61. <body>
  62. <h1>403 Accès Interdit</h1>
  63. </body>
  64. </html>';
  65. exit();
  66. }
  67. }