mit PHP sicher checken, ob http oder https
Martin Hein
- php
0 Sven Rautenberg0 Martin Hein0 Leeloo5E0 Martin Hein0 Leeloo5E0 Martin Hein0 Tom
Hallo Forum,
ich muss in meiner Anwednung checken, ob meine Site über
http oder https aufgerufen worden ist. Das scheint nicht
ganz einfach.
Kann mir jemand verraten, wie man das sicher ermitteln
kann ?
danke und
beste gruesse,
martin
Moin!
ich muss in meiner Anwednung checken, ob meine Site über
http oder https aufgerufen worden ist. Das scheint nicht
ganz einfach.Kann mir jemand verraten, wie man das sicher ermitteln
kann ?
$_SERVER['HTTPS'] verrät es dir. http://www.php.net/reserved.variables
- Sven Rautenberg
Hallo,
wäre naheliegend. In meiner Entwicklungsumgebung (W2K/Xampp)
ist die Variable generell leer. Die Ursache ist wahrscheinlich,
dass, obwohl ich meine Domain mit https aufrufe (was ich durch
Anpassung meiner httpd.conf hinbekommen habe) die Verbindung
nicht über SSL stattfindet, weil die Anpassungen in meiner
httpd.conf unzureichend sind. Hier ein Auszug:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName root.home.net
DocumentRoot Z:/htdocs/root
DirectoryIndex index.php
<Directory Z:/htdocs/root>
AllowOverride AuthConfig
</Directory>
</VirtualHost>
<VirtualHost *443>
ServerName root.home.net
DocumentRoot Z:/htdocs/root
DirectoryIndex index.php
<Directory Z:/htdocs/root>
AllowOverride AuthConfig
</Directory>
SSLEngine On
</VirtualHost>
Ich vermute, dass ich SSL nochmal irgendwo definieren muss.
Aber wo ?
beste gruesse,
martin
Hallo,
<VirtualHost *443>
ServerName root.home.net
DocumentRoot Z:/htdocs/root
DirectoryIndex index.php
<Directory Z:/htdocs/root>
AllowOverride AuthConfig
</Directory>
SSLEngine On
</VirtualHost>Ich vermute, dass ich SSL nochmal irgendwo definieren muss.
hm ... bei XAMPP ist per Default SSL eingestellt, jedenfalls bei meinem XAMPP hier. Versuch mal https://localhost/ sollte eigentlich gehen. Ansonsten fehlt da oben ein ":" zwischen dem * und 443 bei deinem VirtualHost. Nur vertippt?
Gruß,
Leeloo
Hallo,
hm ... bei XAMPP ist per Default SSL eingestellt, jedenfalls bei »» meinem XAMPP hier.
bei meinem Xampp habe ich auch das hier gefunden:
LoadModule ssl_module modules/mod_ssl.so
... veranlasst mich zu denken, dass das Modul wohl geladen wird.
Versuch mal https://localhost/ sollte eigentlich gehen.
genau, da ist die Variable $_SERVER['HTTPS'] auch belegt. (Danke
für den Tipp) In meinem vhost aber nicht ;(
Ansonsten fehlt da oben ein ":" zwischen dem * und 443 bei deinem »» VirtualHost. Nur vertippt?
Der fehlende ":" fehlt nur hier im Forum (sonst hätte sich der
Server wahrscheinlich auch nicht starten lassen)
beste gruesse,
martin
Hallo,
Der fehlende ":" fehlt nur hier im Forum (sonst hätte sich der
Server wahrscheinlich auch nicht starten lassen)
Was oben noch fehlt, sind die Pfade zu den Zertifikaten ...
Schau dir doch mal die hier an: C:\xampp\apache\conf\extra\httpd-ssl.conf
Gruß,
Leeloo
Hallo,
Was oben noch fehlt, sind die Pfade zu den Zertifikaten ...
Schau dir doch mal die hier an: C:\xampp\apache\conf\extra\httpd-ssl.conf
tausend Dank, jetzt klappt's auch mit den Nachbarn ;)
schönen abend,
martin
Hello,
Was oben noch fehlt, sind die Pfade zu den Zertifikaten ...
Schau dir doch mal die hier an: C:\xampp\apache\conf\extra\httpd-ssl.conf
tausend Dank, jetzt klappt's auch mit den Nachbarn ;)
Und was steht jetzt in $_SERVER['HTTPS'] drin?
Würde mich zum Abschluss noch interessieren, wie man die Abfrage universell aufbauen muss.
if (isset($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) != 'off')
wäre das ok?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo,
if (isset($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) != 'off')
wäre das ok?
Nein. Bei manchen Webservern ist die HTTPS-Umgebungsvariable nämlich existent, aber leer, wenn HTTPS nicht an ist (Die Variable ist nicht offiziell standardisiert, aber alle Webserver, die ich bisher getestet habe, setzen sie auf "on", falls HTTPS aktiv ist und lassen sie entweder weg, setzen sie auf einen Leerstring oder setzen sie auf "off", wenn HTTPS nicht aktiv ist).
Die korrekte Abfrage ist also ganz einfach: Man prüfe die Variable auf "on":
if (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
Viele Grüße,
Christian