Besucher unter http:// - und unter https:// surfen lassen?
Verfasst: 22.04.2005 15:56
Hallo zusammen,
ich habe ein ausgefallene Frage an die Runde und wäre für einen Tipp dankbar.
Mein Forum läuft beim Provider 1&1 unter http://www.meine-domain.de/.
Ich habe dort die Möglichkeit einen SSL-Server zu benutzen, um meinen Besuchern auch eine gesicherte Verbindung https:// anzubieten. Diese gesicherte Verbindung lautet jetzt nicht https://www.meine-seite.de/ sondern https://ssl.kundenserver.de/meine-seite.de/
Der Normalfall ist nun, dass Besucher meine Forum als Gast über http://www.meine-domain.de/index.php betreten. Auf der Startseite habe ich nun einen Button "Sichere Verbindung" eingerichtet, der den Besucher im gleichen Fenster auf https://ssl.kundenserver.de/meine-seite.de/index.php weiterleitet.
Physikalisch sind beides die gleichen index.php-Dateien, mal über http und mal über https (ich brauchte dafür kein Spiegelung der Dateien auf einen zweiten Server machen).
Ein Besucher kann nun ohne Probleme im Forum surfen und bewegt sich ständig im Bereich: https://ssl.kundenserver.de/meine-seite.de/...
Das dies funktioniert hat mich auch erstaunt, da ich an meiner Forums-Konfiguration nichts ändern mußte. Hier steht nach wie vor in den Allgemeinen Boardeinstellungen www.meine-seite.de als Domainname.
Jetzt zum Problem!
Hat ein Besucher sich nun auf den sicheren Server (https://ssl.kundenserver.de/meine-seite.de/...) umgeschaltet und geht dann auf die login.php oder ein anderes Anmeldeformular, um sich anzumelden, dann wird er nach z.B. erfolgreicher Anmeldung auf den unsicheren Server (z.B. http://www.meine-seite.de/index.php) zurückgeworfen. Dort glaubt der Benutzer nun, er sei gar nicht angemeldet, da im Header immer noch "Login" und nicht "Logout [Benutzer]" steht.
1. Erkenntnis: D.h. das Redirect arbeitet hierbei mit den Boardeinstellungen www.meine-seite.de und kann nicht erkennen, das sich der Besucher über https://ssl.kundenserver.de/meine-seite.de/login.php angemeldet hat.
Tatsächlich ist der Benutzer aber angemeldet! - Das bekommt er aber nur raus, wenn er nach dem Abwurf (Redirect) wieder über den Button (s.o.) auf die sichere Verbindung wechselt. Dann sieht der Header so aus wie erwartet.
2. Erkenntnis: Das Session-Cookie muss mit der https// Adresse richtig gesetzt worden sein.
Meine Idee für eine Lösung müßte in der function.php zu finden sein.
Dort gibt es ja die Funktion function redirect($url).
Diese Funktion setzt sich die absolute Redirect Adresse aus den Strings: $server_protocol . $server_name . $server_port . $script_name . $url, zusammen.
Kann ich aus diesem zusammengesetzten String $server_protocol . $server_name . $server_port . $script_name einfach herausnehmen, um eine relative Adresse zu erhalten?
Damit die Redirect-Adresse dann nicht lautet: http://www.meine-seite.de/index.php
sondern: index.php
Die Navigation im Forum ist sonst ja erfreulicherweise auch immer relativ, sonst würde das Board nicht unter den o.g. zwei Adressen laufen. Was ich überhaupt nicht einschätzen kann ist, ob die Funktion redirect auch noch in anderen Situationen benötigt wird, die hier eine Änderung verbieten würden.
Dann erst mal danke, dass ihr mein Problem überhaupt gelesen habt.
Vielleicht hat ja jemand einen Tipp!
Holger
ich habe ein ausgefallene Frage an die Runde und wäre für einen Tipp dankbar.
Mein Forum läuft beim Provider 1&1 unter http://www.meine-domain.de/.
Ich habe dort die Möglichkeit einen SSL-Server zu benutzen, um meinen Besuchern auch eine gesicherte Verbindung https:// anzubieten. Diese gesicherte Verbindung lautet jetzt nicht https://www.meine-seite.de/ sondern https://ssl.kundenserver.de/meine-seite.de/
Der Normalfall ist nun, dass Besucher meine Forum als Gast über http://www.meine-domain.de/index.php betreten. Auf der Startseite habe ich nun einen Button "Sichere Verbindung" eingerichtet, der den Besucher im gleichen Fenster auf https://ssl.kundenserver.de/meine-seite.de/index.php weiterleitet.
Physikalisch sind beides die gleichen index.php-Dateien, mal über http und mal über https (ich brauchte dafür kein Spiegelung der Dateien auf einen zweiten Server machen).
Ein Besucher kann nun ohne Probleme im Forum surfen und bewegt sich ständig im Bereich: https://ssl.kundenserver.de/meine-seite.de/...
Das dies funktioniert hat mich auch erstaunt, da ich an meiner Forums-Konfiguration nichts ändern mußte. Hier steht nach wie vor in den Allgemeinen Boardeinstellungen www.meine-seite.de als Domainname.
Jetzt zum Problem!
Hat ein Besucher sich nun auf den sicheren Server (https://ssl.kundenserver.de/meine-seite.de/...) umgeschaltet und geht dann auf die login.php oder ein anderes Anmeldeformular, um sich anzumelden, dann wird er nach z.B. erfolgreicher Anmeldung auf den unsicheren Server (z.B. http://www.meine-seite.de/index.php) zurückgeworfen. Dort glaubt der Benutzer nun, er sei gar nicht angemeldet, da im Header immer noch "Login" und nicht "Logout [Benutzer]" steht.
1. Erkenntnis: D.h. das Redirect arbeitet hierbei mit den Boardeinstellungen www.meine-seite.de und kann nicht erkennen, das sich der Besucher über https://ssl.kundenserver.de/meine-seite.de/login.php angemeldet hat.
Tatsächlich ist der Benutzer aber angemeldet! - Das bekommt er aber nur raus, wenn er nach dem Abwurf (Redirect) wieder über den Button (s.o.) auf die sichere Verbindung wechselt. Dann sieht der Header so aus wie erwartet.
2. Erkenntnis: Das Session-Cookie muss mit der https// Adresse richtig gesetzt worden sein.
Meine Idee für eine Lösung müßte in der function.php zu finden sein.
Dort gibt es ja die Funktion function redirect($url).
Diese Funktion setzt sich die absolute Redirect Adresse aus den Strings: $server_protocol . $server_name . $server_port . $script_name . $url, zusammen.
Code: Alles auswählen
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="refresh" content="0; [color=red]url=' . $server_protocol . $server_name . $server_port . $script_name . $url . '[/color]">
<title>Redirect</title>
</head><body>
<div align="center">If your browser does not support meta redirection please click <a href="[color=red]' . $server_protocol . $server_name . $server_port . $script_name . $url . '[/color]">HERE</a> to be redirected</div>
</body></html>';
Damit die Redirect-Adresse dann nicht lautet: http://www.meine-seite.de/index.php
sondern: index.php
Die Navigation im Forum ist sonst ja erfreulicherweise auch immer relativ, sonst würde das Board nicht unter den o.g. zwei Adressen laufen. Was ich überhaupt nicht einschätzen kann ist, ob die Funktion redirect auch noch in anderen Situationen benötigt wird, die hier eine Änderung verbieten würden.
Dann erst mal danke, dass ihr mein Problem überhaupt gelesen habt.
Vielleicht hat ja jemand einen Tipp!
Holger