Completed
Push — master ( 8f6055...27a7eb )
by Arman
14s queued 12s
created

getallheaders()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 19
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 4
eloc 9
nc 4
nop 0
dl 0
loc 19
rs 9.9666
c 2
b 0
f 0
1
<?php
2
3
/**
4
 * Quantum PHP Framework
5
 *
6
 * An open source software development framework for PHP
7
 *
8
 * @package Quantum
9
 * @author Arman Ag. <[email protected]>
10
 * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
11
 * @link http://quantum.softberg.org/
12
 * @since 2.5.0
13
 */
14
15
use Quantum\Environment\Server;
16
17
18
/**
19
 * Gets user IP
20
 * @return string|null
21
 */
22
function get_user_ip(): ?string
23
{
24
    $server = new Server();
25
26
    if ($server->get('HTTP_CLIENT_IP')) {
27
        $user_ip = $server->get('HTTP_CLIENT_IP');
28
    } elseif ($server->get('HTTP_X_FORWARDED_FOR')) {
29
        $user_ip = $server->get('HTTP_X_FORWARDED_FOR');
30
    } else {
31
        $user_ip = $server->get('REMOTE_ADDR');
32
    }
33
34
    return $user_ip;
35
}
36
37
if (!function_exists('getallheaders')) {
38
39
    /**
40
     * Get all headers
41
     * Built-in PHP function synonym of apache_request_headers()
42
     * Declaring here for Nginx server
43
     * @return array
44
     */
45
    function getallheaders(): array
46
    {
47
        $server = new Server();
48
49
        $data = $server->all();
50
51
        if (empty($data)) {
52
            return [];
53
        }
54
55
        $headers = [];
56
57
        foreach ($data as $key => $value) {
58
            if (substr($key, 0, 5) == 'HTTP_') {
59
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($key, 5)))))] = $value;
60
            }
61
        }
62
63
        return $headers;
64
    }
65
66
}
67