@@ -51,7 +51,7 @@ public function __construct()
51
51
];
52
52
}
53
53
if (!is_null ($ clientIpAddress = $ this ->getClientIP ())) {
54
- $ this ->headers ['X-Forwarded-For ' ] = $ clientIpAddress ;
54
+ $ this ->headers ['X-Forwarded-For ' ] = $ clientIpAddress ;
55
55
}
56
56
$ this ->encryption = DI ::container ()->get (EncryptionProvider::class);
57
57
$ this ->secureStorage = DI ::container ()->get (SecureCookieProvider::class);
@@ -111,22 +111,25 @@ public function setEncryptionProvider(EncryptionInterface $encryptionProvider):
111
111
}
112
112
113
113
/**
114
- * looks for a user's IP address
114
+ * looks for a user's IP address
115
115
*
116
116
* @return string|null
117
117
*/
118
118
public function getClientIP ()
119
- {
120
- if (array_key_exists ('HTTP_X_REAL_IP ' , $ _SERVER )) {
121
- return $ _SERVER ["HTTP_X_REAL_IP " ];
122
- } else if (array_key_exists ('HTTP_X_FORWARDED_FOR ' , $ _SERVER )) {
123
- return $ _SERVER ["HTTP_X_FORWARDED_FOR " ];
124
- } else if (array_key_exists ('REMOTE_ADDR ' , $ _SERVER )) {
125
- return $ _SERVER ["REMOTE_ADDR " ];
126
- } else if (array_key_exists ('HTTP_CLIENT_IP ' , $ _SERVER )) {
127
- return $ _SERVER ["HTTP_CLIENT_IP " ];
119
+ {
120
+ $ potentialHeaders = [
121
+ 'HTTP_X_REAL_IP ' , // nginx
122
+ 'HTTP_X_FORWARDED_FOR ' ,
123
+ 'REMOTE_ADDR ' ,
124
+ 'HTTP_CLIENT_IP '
125
+ ];
126
+
127
+ foreach ($ potentialHeaders as $ header ) {
128
+ if (!empty ($ value = $ _SERVER [$ header ] ?? null )) {
129
+ return $ value ;
130
+ }
128
131
}
129
-
132
+
130
133
return null ;
131
134
}
132
135
0 commit comments