Dieter: Viewportgröße mit PHP ermitteln

Hallo,

kann man mit PHP die Viewportgröße des Bildschirms ermitteln?

  1. Tach!

    kann man mit PHP die Viewportgröße des Bildschirms ermitteln?

    Kurz: Nein.

    In normaler Konstellation läuft PHP auf dem Server. Der kann nur das vom Client wissen, was der Client ihm mitteilt. Die Viewportgröße gehört nicht zu den üblicherweise übertragenen Werten. Es braucht einen clientseitigen Mechanismus, der die Daten ermittelt und an den Server überträgt.

    dedlfix.

    1. Hallo, danke für die rasche Antwort.

      Kann ich, bevor ich die Seite mit PHP aufbaue, eine für den Anwender unsichtbare Anfrage an den Client senden, damit er mir die gewünschte Information sendet?

      1. Hallo Dieter,

        nein, du kannst keine Anfragen an den Client senden. Browser und Server sind keine gleichberechtigten Partner.

        Der Client sendet Anfragen an den Server. Der Server antwortet.

        Du kannst bestenfalls eine Einstiegsseite machen, die per JavaScript die Daten ermittelt und dann eine Weiterleitung an die richtige Seite auslöst. Dafür verwendet man im Script eine Zuweisung an die window.location Eigenschaft.

        D.h. dein Anwender ruft die Adresse https://example.org/index.php auf. Dort stellst Du fest, dass die URL-Parameter noch unbekannt sind, und schickst erstmal nur minimales HTML mit einem Script darin, dass die Viewportgröße bestimmt und dann die Weiterleitung an - beispielsweise - /index.php?width=1024&height=768 auslöst.

        Das ist nicht schön, und sicherlich gibt es elegantere Methoden, z.B. ein vom JavaScript gesetzter temporärer Cookie.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf,

          Das ist nicht schön, und sicherlich gibt es elegantere Methoden, z.B. ein vom JavaScript gesetzter temporärer Cookie.

          Und dann stellt der Nutzer fest, dass die Seite in einer anderen Größe besser zu lesen ist, ändert die Viewport-Größe und im Cookie steht noch die alte Größe. Wir sollten vielleicht erst einmal der Frage von @tk nachgehen.

          Viele Grüße
          Robert

          1. Hallo Robert,

            letztlich habe ihn ja hier auf die Problematik hingewiesen.

            Rolf

            --
            sumpsi - posui - obstruxi
      2. Hallo Dieter,

        Kann ich, bevor ich die Seite mit PHP aufbaue, eine für den Anwender unsichtbare Anfrage an den Client senden, damit er mir die gewünschte Information sendet?

        Nicht zuverlässig – und wie bereits geschrieben kann sich der Viewport jederzeit ändern. Aber vielleicht verrätst du mal was du eigentlich wirklich vor hast. Was willst du mit der Viewportgröße am Server dann manchen?

        Gruß,
        Tobias

  2. Hallo Dieter,

    nein. PHP läuft auf deinem Server, nicht im Browser, und kann daher generell nicht auf Informationen des Browsers zugreifen.

    Ausnahme sind nur die Informationen, die der Browser an den Server sendet. Das sind zum einen die HTTP Request Header, zum anderen Daten, die aus einem Form, einem Link oder mit einem AJAX-Request als Parameter gesendet werden.

    Für die Viewportgröße kannst Du mit JavaScript die Größe bestimmen und sie dann, beispielsweise als hidden input in einem Form, mit zum Server senden.

    Beachte nur, dass die Viewportgröße keine Konstante ist. Der Anwender kann jederzeit die Fenstergröße verändern (außer auf einem Handy oder einer Smartwatch). Wenn Du also vorhast, am Server die Größe von HTML Elementen zu bestimmen, oder für "Handy-Ansicht" und "Desktop-Ansicht" unterschiedliches HTML zu generieren - nein, falscher Ansatz.

    Die Größe von HTML Elementen bestimmt der Browser, und du unterstützt ihn dabei mit CSS. Genauso schaltest du zwischen schmalen und breiten Ansichten um. Der Server liefert das HTML, und per CSS entscheidest Du, was wie angezeigt wird. Das Stichwort dazu heißt Responsive Webdesign.

    Das stößt an die Grenzen, wenn die Handy-Ansicht sich massiv von der Desktop-Ansicht unterscheiden soll. Wenn der Desktop deutlich mehr Daten anzeigen soll. In dem Fall würde ich aber eher einen Link auf der Seite empfehlen, um auf die jeweils andere Ansicht umzuschalten (analog der mobilen Ansicht in der Wikipedia).

    Rolf

    --
    sumpsi - posui - obstruxi
    1. @@Rolf B

      Der Anwender kann jederzeit die Fenstergröße verändern (außer auf einem Handy oder einer Smartwatch).

      Natürlich kann das der Anwender. Das kostet sie eine viertel Drehung des Handgelenks.

      😷 LLAP

      --
      “When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
      1. Hi,

        Der Anwender kann jederzeit die Fenstergröße verändern (außer auf einem Handy oder einer Smartwatch).

        Natürlich kann das der Anwender. Das kostet sie eine viertel Drehung des Handgelenks.

        Beim Smartphone kann man auch den Screen teilen (bei Android 9 z.B. per langem Fingerdruck auf das Kästchen), so daß sich die Fenstergröße ändert …

        Und die Teilungs-Stelle läßt sich sogar verschieben.

        cu,
        Andreas a/k/a MudGuard

  3. Vielleicht willst Du ja viel mehr etwas wie https://wiki.selfhtml.org/wiki/CSS/Media_Queries?