Verfügbarkeit von $_SERVER['REMOTE_HOST']
Maulwurf
- php
Hi,
innerhalb eines Intranets öffne ich eine PHP-Seite. Im Normalfall liefert PHP den Inhalt von $_SERVER['REMOTE_HOST'] problemlos. Es gibt aber bestimmte Anwender bei denen ich diese Information nicht bekomme. Ich vermute das es mit den Sicherheitseinstellungen des IE (IE ist pflicht in diese Organisation) zu tun hat. Ich habe versucht bei mir das Problem nachzuvollziehen, ist aber mir nicht gelungen.
Weisst jemanden ob und wie ich im IE die Übertragung von bestimmten Header Information (z.B. Hostname) unterbinden kann?
Vielen Dank im Voraus
Maulwurf
hi,
innerhalb eines Intranets öffne ich eine PHP-Seite. Im Normalfall liefert PHP den Inhalt von $_SERVER['REMOTE_HOST'] problemlos. Es gibt aber bestimmte Anwender bei denen ich diese Information nicht bekomme. Ich vermute das es mit den Sicherheitseinstellungen des IE (IE ist pflicht in diese Organisation) zu tun hat.
Das glaube ich weniger.
Weisst jemanden ob und wie ich im IE die Übertragung von bestimmten Header Information (z.B. Hostname) unterbinden kann?
Den Remote Host dürfte idR. nicht der Client übertragen.
Deinem Webserver ist die IP-Adresse des anfragenden Clients bekannt, und sie steht dir in $_SERVER['REMOTE_ADDR'] zur Verfügung.
Wenn dir dein Webserver auch den REMOTE_HOST als Umgebungsvariable zur Verfügung stellt (und dazu muss er erst mal entsprechend konfiguriert sein), so hat er vorher selbst eine Abfrage gemacht, um zur IP-Adresse den Hostnamen zu ermitteln. Und auch das kann überhaupt nur dann geklappt haben, wenn es zu dieser IP überhaupt einen zugeordneten Hostnamen gibt - aber das muss m.W. nicht mal der Fall sein.
gruß,
wahsaga
Hi,
so hat er vorher selbst eine Abfrage gemacht, um zur IP-Adresse den Hostnamen zu ermitteln. Und auch das kann überhaupt nur dann geklappt haben, wenn es zu dieser IP überhaupt einen zugeordneten Hostnamen gibt - aber das muss m.W. nicht mal der Fall sein.
Könnte es sein, das bestimmte Proxys so konfiguriert sind, das sie diese Abfrage nicht beantworten? (weil diese Proxys restriktiv konfiguriert sind). In diesem Fall: wie kann dann PHP eine session öffnen? (Er würde wesentliche informationen nicht bekommen)
mfG
Maulwurf
hi,
Könnte es sein, das bestimmte Proxys so konfiguriert sind, das sie diese Abfrage nicht beantworten? (weil diese Proxys restriktiv konfiguriert sind).
Eine IP-Adresse zu einem Hostnamen aufzulösen, dürfte m.E. nicht Aufgabe eines Proxys sein.
In diesem Fall: wie kann dann PHP eine session öffnen?
Was bitte hat eine Session in PHP damit zu tun, ob dem Script der Hostname des anfragenden Clients bekannt ist?
(Er würde wesentliche informationen nicht bekommen)
Wieso nicht?
gruß,
wahsaga
Hi,
Was bitte hat eine Session in PHP damit zu tun, ob dem Script der Hostname des anfragenden Clients bekannt ist?
Im Prinzip nichts (auch sonst nichts) Ich stochere nur herum. Aufgrund des Verhaltens meines PHPs, sieht es so aus als ob er nicht in der Lage wäre eine Session zu eröffnen (leider habe ich keinen Zugriff aufs PHP-Log) Das einzige Unterschied das ich gesehen habe, ist das in diesem Fällen REMOTE_HOST stand auch nicht zur Verfügung.
Leider ist diese Firma zu um die Zuständige zu finden und es bleibt nur das "Trial and Error" methode. Auf alle Fälle danke für den Hinweis
mfG
Maulwurf
hi,
Im Prinzip nichts (auch sonst nichts) Ich stochere nur herum. Aufgrund des Verhaltens meines PHPs, sieht es so aus als ob er nicht in der Lage wäre eine Session zu eröffnen
Was bedeutet "es sieht so aus"?
Wie äußert sich das?
Statt "herumzustochern", solltest du da schon versuchen systematischer vorzugehen.
Essentiell für das Funktionieren eines Sessionmechanismus ist, dass die Übergabe der Session-ID funktioniert - also würde ich in der Richtung zuerst Untersuchungen anstellen.
Wird sie bspw. ausschließlich per Cookie übertragen, was bestimmte Clients aber ablehnen könnten? etc.
(leider habe ich keinen Zugriff aufs PHP-Log)
Hast du rudimentären Zugriff auf die Konfiguration?
So dass du bspw. per .htaccess o.ä. PHP anweisen könntest, Fehler nicht zu loggen, sondern auszugeben.
Zugriff auf den Scriptcode, um Debugausgaben einbauen zu können, hast du doch aber wenigstens?
gruß,
wahsaga
Hi,
Was bedeutet "es sieht so aus"?
Wie äußert sich das?
Sessionsvariablen gehen verloren. Ich "rufe" diesselbe PHP_Seite zweimal auf. 1. Initialisiere ich eine Variable, 2. ergänze ich diese un maile ich das zusammengesetzte Variable. Aus meinen PC bekomme ich per Mail das zusammengsetzte variable. Aus andere PC's bekomme ich nur den 2. Teil. Deswegen "sieht es so aus" als ob die Session nicht initialisiert worden wäre
Essentiell für das Funktionieren eines Sessionmechanismus ist, dass die Übergabe der Session-ID funktioniert - also würde ich in der Richtung zuerst Untersuchungen anstellen.
Wird sie bspw. ausschließlich per Cookie übertragen, was bestimmte Clients aber ablehnen könnten? etc.
Ich übertrage die SessionId _nicht_ mittels URL. deswegen gehe ich davon aus, das PHP es mittels Cookie tut. Leider sehe ich auf meine PC kein Cookie, was mich ziemlich ratlos macht, da aus meinen Client die Sessionvariable richtig ergänzt und übermittelt wird.
Hast du rudimentären Zugriff auf die Konfiguration?
So dass du bspw. per .htaccess o.ä. PHP anweisen könntest, Fehler nicht zu loggen, sondern auszugeben.
Leider nicht
Zugriff auf den Scriptcode, um Debugausgaben einbauen zu können, hast du doch aber wenigstens?
das schon, aber ich weiss nicht wie ich anfangen soll. Ich habe versucht auf meinen Client die Einstellungen so zu ändern, das es auch bei mir den Fehler eintritt (cookies deaktivieren, Sicherheitseinstellungen hochsetzen etc.) Es hat nichts geholfen. Deswegwn wäre ich über jede weitere Denkanstoss mehr als dankbar
Gruss
Maulwurf
hi,
Sessionsvariablen gehen verloren. Ich "rufe" diesselbe PHP_Seite zweimal auf. 1. Initialisiere ich eine Variable, 2. ergänze ich diese un maile ich das zusammengesetzte Variable. Aus meinen PC bekomme ich per Mail das zusammengsetzte variable. Aus andere PC's bekomme ich nur den 2. Teil. Deswegen "sieht es so aus" als ob die Session nicht initialisiert worden wäre
Wenn PHP keine Session-ID übermittelt bekommt (oder eine "ungültige", zu der keine aktive Session exisitiert), dann legt es beim Aufruf von session_start() einfach eine neue an.
Dass sich in dieser dann aber noch keine Werte befinden, ist klar.
Ich übertrage die SessionId _nicht_ mittels URL. deswegen gehe ich davon aus, das PHP es mittels Cookie tut. Leider sehe ich auf meine PC kein Cookie, was mich ziemlich ratlos macht, da aus meinen Client die Sessionvariable richtig ergänzt und übermittelt wird.
Dann lasse dir zur Kontrolle erst mal $_COOKIE mittels print_r() ausgeben - wenn die SID per Cookie übermittelt wurde, findest du sie darin. Vergleiche die Ausgabe mal beim Aufruf über zwei Clients, einem wo's funktioniert und einem wo nicht.
Und auch mal die Rückgabe von session_id() (ohne Parameter) ausgeben lassen - mal vor direkt vor dem session_start() und nochmal direkt danach.
gruß,
wahsaga
Hi,
Dann lasse dir zur Kontrolle erst mal $_COOKIE mittels print_r() ausgeben - wenn die SID per Cookie übermittelt wurde, findest du sie darin. Vergleiche die Ausgabe mal beim Aufruf über zwei Clients, einem wo's funktioniert und einem wo nicht.
gerade probiert: SID ist in $_COOKIE drin. Das merkwurdige: Auf meinen client finde ich _überhaupt_ keinen Cookie. Ist es _absolut_sicher_ das PHP Cookies Clientseitig gespeichert werden? Das PHP Manual behauptet es, aber bei mir gibt es keinen
Und auch mal die Rückgabe von session_id() (ohne Parameter) ausgeben lassen - mal vor direkt vor dem session_start() und nochmal direkt danach.
session id is vor Start leer, nach Start hat es einen Inhalt. Der Inhalt bleib gleich beim zweiten Aufruf
Ich bin ratlos
Gruss
Maulwurf
Hi,
Ist es _absolut_sicher_ das PHP Cookies Clientseitig gespeichert werden?
natürlich nicht. Es ist Einstellungssache des Browsers, ob Cookies gespeichert werden dürfen oder nicht. Für Firefox gibt's sogar eine schöne Erweiterung, über die einstellbar ist, welche Cookies dauerhaft gespeichert und welche nach Programmende gelöscht werden.
freundliche Grüße
Ingo
echo $begrüßung;
gerade probiert: SID ist in $_COOKIE drin. Das merkwurdige: Auf meinen client finde ich _überhaupt_ keinen Cookie.
Im Allgemeinen (sprich Default-Einstellung) werden SessionID-Cookies nur im RAM aufbewahrt und werden beim Beenden des Browsers nicht weiter aufgehoben. Wenn man die Lebenszeit von default 0 auf einen anderen Wert setzt, legt sie der Browser beständiger an.
echo "$verabschiedung $name";
Hi,
Im Allgemeinen (sprich Default-Einstellung) werden SessionID-Cookies nur im RAM aufbewahrt und werden beim Beenden des Browsers nicht weiter aufgehoben.
That's it. Session Cookies sind clientseitig nicht "sichtbar". Da ich überhaupt nicht wissen kann welche Cookie einstellungen der Client hat, ist das Verwalten von Sessions mittels Cookies IMHO nicht brauchbar. Auch wenn das Übermitteln von SID via URL mir nicht sonderlich gefällt(session klau), muss ich in den sauren Apfel beissen. Bin sowieso im Intranet unterwegs.
Auf alle Fälle Danke für dis Denkanstösse
Gruss
Maulwurf