Martin Hein: mit PHP sicher checken, ob http oder https

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

  1. 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

    --
    "Love your nation - respect the others."
    1. 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

      1. 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

        --
        "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
        1. 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

          1. 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

            --
            "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
            1. 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

              1. 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

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                1. 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