예제 #1
0
 public function testBuildEntityArrayWithValueOnly()
 {
     $headerStr = '10.0.0.1,10.0.0.2,10.0.0.3';
     $header = new \Header('X-Forwarded-For', $headerStr, ',');
     $header->parseParams();
     $this->assertEquals(3, $header->count());
     $partsArray = $header->toArray();
     $this->assertEquals('10.0.0.1', $partsArray[0]);
     $entityArray = $header->buildEntityArray();
     $this->assertEquals(3, count($entityArray[0]));
 }
예제 #2
0
 /**
  * Sets the IP address and User Agent of the requesting client. It checks for the presence of
  * a Forwarded or X-Forwarded-For header and, if present, it uses the left most address listed.
  * If both of these headers is present, the Forwarded header takes precedence.
  * If the header is not present, it defaults to the REMOTE_ADDR value
  */
 public function setClientInfo()
 {
     $ipAddress = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
     $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
     if (array_key_exists('HTTP_FORWARDED', $_SERVER)) {
         $header = new Header('Forwarded', $_SERVER['HTTP_FORWARDED'], ';');
         $header->parseParams();
         $header->setGlue(',');
         $header->parseParams();
         $elementArray = $header->buildEntityArray();
         $elementArray = array_change_key_case($elementArray);
         if (isset($elementArray['for']) && count($elementArray['for'])) {
             $ipAddress = $elementArray['for'][0];
         }
         if (isset($elementArray['user-agent']) && count($elementArray['user-agent'])) {
             $userAgent = $elementArray['user-agent'][0];
         }
     } elseif (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
         $header = new Header('X-Forwarded-For', $_SERVER['HTTP_X_FORWARDED_FOR'], ',');
         $header->parseParams();
         $elementArray = $header->buildEntityArray();
         $ipAddress = count($elementArray) ? $elementArray[0] : null;
     }
     $this->clientIP = $ipAddress;
     $this->clientUserAgent = $userAgent;
 }