Direkter Zugriff auf Request-Header via HTTP

Parantatatam

mag Cookies & Kekse
Hallo Tutorianer,

ich bin gerade etwas davon genervt, dass PHP die Header, die der Client beim Request mitsendet, in einer mir missliebigen Form aufbereitet, weshalb ich nach einer Möglichkeit suche direkt auf diese Daten zugreifen möchte. Dabei nutzt mir die Funktion apache_request_headers() nichts, da bei mir auf dem Server PHP Versionsbedingt als CGI-Modul läuft (und ich deshalb auch nicht die Basic oder Digit Authentifiziertung nutzen kann). Kennt jemand dieses Problem oder kann mir eine Lösung anbieten?
 
Es gibt die Möglichkeit die entsprechenden Auth-Header via htaccess weiterzuleiten: http://www.besthostratings.com/articles/http-auth-php-cgi.html
Das Beispiel ist für Basic Auth. Für Digit gibt es sicherlich etwas vergleichbares.

Ansonsten schau mal in die Kommentare auf der PHP-Seite. Dort gibt es Funktionen, welche dir vielleicht helfen (Ich nutze kein CGI, von daher kann ich dir nicht sagen, ob die Header genau so vorliegen, wie bei mod-php): http://www.php.net/manual/en/function.getallheaders.php#99814 oder http://www.php.net/manual/de/function.apache-request-headers.php#70810
 
Zuletzt bearbeitet:
Was willst du denn genau wissen?
Ich habe jetzt einfach mal das Resultat von apache_request_headers mit $_SERVER verglichen
PHP:
var_dump(apache_request_headers(),$_SERVER);
Auf meinem XAMPP finde ich in $_SERVER alle Anaben von apache_request_headers. Wie sich das unter CGI-Modul verhält weiss ich leider nicht

Hier der Abgleich
Resultat aus apache_request_headers$_SERVER
["Host"]$_SERVER['HTTP_HOST']
["User-Agent"]$_SERVER['HTTP_USER_AGENT']
["Accept"]$_SERVER['HTTP_ACCEPT']
["Accept-Language"]$_SERVER['HTTP_ACCEPT_LANGUAG']
["Accept-Encoding"]$_SERVER['HTTP_ACCEPT_ENCODING']
["Connection"]$_SERVER['HTTP_CONNECTION']
["Cache-Control"]$_SERVER['HTTP_CACHE_CONTROL']
 
Yaslaw, beispielsweise werden Daten wie die für die Authentifikation und den Referer von PHP in eigenen Variablen speichert ohne sie zusätzlich noch als Header anzugeben. Am liebsten wäre es mir, wenn ich wirklich den ganzen Request uninterpretiert erhalten könnte.

Nachtrag: Ich habe so eben gesehen, dass mein Anbieter jetzt standardmäßig auf PHP 5.3 umgeschaltet hat und ich dementsprechend nicht das CGI-Modul verwenden muss. Somit kann ich nun wie sonst üblich es mit den Apache-Funktionen lösen. Allerdings haben sich bei mir gerade zwei Dinge gezeigt: einerseits verstehe ich nicht, warum das erste Beispiel von _Grubi bei mir nicht funktionierte (Werte wurden nicht in $_SERVER angezeigt), andererseits hänge ich gerade wieder an einem Konfiguration in .htaccess und raufe mir wieder die Haare, weil ich einfach nicht verstehe, warum diese Regeln nicht so eingehalten werden, wie ich mir das dachte:
Code:
RewriteEngine on

RewriteCond %{REQUEST_URI} ^assets/(.*)$
RewriteRule ^assets/(.*)$ assets.php?$1 [L]

RewriteCond %{REQUEST_URI} !^assets/(.*)$
RewriteRule ^(.*)$ router.php?$1 [L]
Das soll dafür sorgen, dass alle Anfragen a la domain.tld/assets/$1 die Daten an die assets.php übergeben, ansonsten sollen die Daten an die router.php übergeben werden. Witzigerweise reagiert er auf die erste Bedingung, wenn die zweite nicht angegeben ist. Mit dieser hingegen, verwendet er nur letztere. Kann mir das bitte jemand erklären?
 
Zuletzt bearbeitet:
Zurück