2013-06-02 15 views
6

O ile mi wiadomo, apache_request_headers() zawiera te same informacje co $_SERVER, ale z nieco innymi klawiszami. Dlaczego ktoś powinien kiedykolwiek używać apache_request_headers(), a nie tylko uzyskać te informacje od $_SERVER? Używam PHP 5.3.18 z Apache na Centos. Dziękujemy

EDYCJA. identyczne dane z $_SERVER i apache_request_headers()

Jun 2 08:50:53 localhost httpd: HTTP_HOST: www.badobe.com 
Jun 2 08:50:53 localhost httpd: Host: www.badobe.com 
Jun 2 08:50:53 localhost httpd: HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 
Jun 2 08:50:53 localhost httpd: User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 
Jun 2 08:50:53 localhost httpd: HTTP_ACCEPT: */* 
Jun 2 08:50:53 localhost httpd: Accept: */* 
Jun 2 08:50:53 localhost httpd: HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.5 
Jun 2 08:50:53 localhost httpd: Accept-Language: en-US,en;q=0.5 
Jun 2 08:50:53 localhost httpd: HTTP_ACCEPT_ENCODING: gzip, deflate 
Jun 2 08:50:53 localhost httpd: Accept-Encoding: gzip, deflate 
Jun 2 08:50:53 localhost httpd: HTTP_REFERER: http://www.badobe.com/demo/administrator/index.php?cid=3 
Jun 2 08:50:53 localhost httpd: Referer: http://www.badobe.com/demo/administrator/index.php?cid=3 
Jun 2 08:50:53 localhost httpd: HTTP_COOKIE: PHPSESSID=feg3ecd4rsefvd03mgg6qear21 
Jun 2 08:50:53 localhost httpd: Cookie: PHPSESSID=feg3ecd4rsefvd03mgg6qear21 
Jun 2 08:50:53 localhost httpd: HTTP_CONNECTION: keep-alive 
Jun 2 08:50:53 localhost httpd: Connection: keep-alive 
Jun 2 08:50:53 localhost httpd: HTTP_IF_MODIFIED_SINCE: Sun, 02 Jun 2013 15:48:42 GMT 
Jun 2 08:50:53 localhost httpd: If-Modified-Since: Sun, 02 Jun 2013 15:48:42 GMT 
Jun 2 08:50:53 localhost httpd: HTTP_CACHE_CONTROL: max-age=0 
Jun 2 08:50:53 localhost httpd: Cache-Control: max-age=0 

Odpowiedz

3

Zgaduję, że funkcja działa tylko z Apache. ale to tylko dzikie przypuszczenie

ponadto Przypuszczam, funkcja zwraca wszystkie nagłówki, gdzie myślę $ _SERVER zawiera predefiniowany zestaw nagłówków

2

Ponieważ apache_request_headers() zwraca tablicę asocjacyjną wszystkich nagłówków HTTP w bieżącym wniosku, gdzie jako $_SERVER daje więcej niż tego

  • dane nagłówkowe
  • ścieżki Wycinek
  • lokalizacje skryptów
+0

Dzięki Starx. Czy jest coś innego lub nowego w 'apache_request_headers()', które nie jest w '$ _SERVER'? – user1032531

+0

@ user1032531, Sprawdź moją aktualizację. – Starx

+0

Jeszcze raz dziękuję Starx. Ale czy '' apache_request_headers() 'nie jest nadmiarowy? Zobacz mój edytowany oryginalny post. Jakie nowe informacje zapewnia? Czy jest on mikroskopowo wolniejszy niż dostęp do tablicy $ _SERVER? – user1032531

2

apache_request_headers nie jest (całkowicie) przenośny i $_SERVER nie jest całkowicie zakończona . Przede wszystkim $_SERVER nigdy nie zawiera żadnego nagłówka Authorization, bez względu na to, czy PHP mogłoby przetworzyć jego wartość wewnętrznie, czy też nie.

Od wersji 5.4.0 apache_request_headers został załatany, aby pokazać również wszystkie nagłówki w wdrożeniach CGI.