NetAktiv
Senior HTML'ler
Hallo,
ich weiß, dass es oft diskutiert wird, dass es wenig Sinn macht, Browserdaten wie screen.width im PHP zu verarbeiten. Dennoch habe ich einfach mal ein paar Scripts geschrieben, die als Beispiel dienen können, wie man so etwas machen könnte. Die Lösung besteht aus 2 Teilen:
Das PHP Script zum Erzeugen des Bildes
Dynamisch bei Bedarf erzeugtes JavaScript im PHP zum Anfordern des Bildes
ich weiß, dass es oft diskutiert wird, dass es wenig Sinn macht, Browserdaten wie screen.width im PHP zu verarbeiten. Dennoch habe ich einfach mal ein paar Scripts geschrieben, die als Beispiel dienen können, wie man so etwas machen könnte. Die Lösung besteht aus 2 Teilen:
- PHP Script empfängt die Daten, speichert sie im $_SESSION Array und gibt ein grünes (OK) bzw rotes (Fehler) 16x16px großes GIF Image zurück. Dazu muss die GD Bibliothek aktiviert sein. Man kann natürlich auf die Erzeugung des Images verzichten.
- Im Footer (der in allen Dateien geladen wird) prüfe ich, ob ich die gewünschten Browserdaten schon kenne. Falls nicht, schreibe ich den Request zur Ausführung eines JavaScripts. Das JavaScript fordert das in 1 von PHP erzeugte Bild versteckt (display:none) an.
Das PHP Script zum Erzeugen des Bildes
PHP:
<?php
//Aufruf im Dokument <img src="/scripts/setScreenSize.php?screen_width=xxx&screen_height=yyy" alt="screenSize" >
$screenWidth = (isset($_REQUEST['screen_width'])) ? intval($_REQUEST['screen_width']) : 0;
$screenHeight = (isset($_REQUEST['screen_height'])) ? intval($_REQUEST['screen_height']) : 0;
//Bild 16x16px erstellen, Farbe Rot (Fehler bei den Parametern) oder Grün (OK)
$image = imagecreate(16, 16) or die('Fehler beim Erstellen des Bildes - imagecreate');
$colorResult = (($screenWidth > 0) && ($screenHeight > 0)) ? imagecolorallocate($image, 0, 255, 0) : imagecolorallocate($image, 255, 0, 0);
//Bild an Browser senden und Ressourcen freigeben
header('Content-Type: image/gif');
imagegif($image);
imagedestroy($image);
//Daten bei der Session speichern
if (!isset($_SESSION)) session_start();
$_SESSION['session_screen_width'] = $screenWidth;
$_SESSION['session_screen_height'] = $screenHeight;
?>
Dynamisch bei Bedarf erzeugtes JavaScript im PHP zum Anfordern des Bildes
PHP:
if (!isset($_SESSION['session_screen_width']) || true) {
$imgHtml = "\"<img alt='screenSize' src='/scripts/set_screen_size.php?screen_width=\" + screen.width + \"&screen_height=\" + screen.height + \" 'style='display:none'>\"";
echo "<script type='text/javascript'> document.write($imgHtml); </script>" . PHP_EOL;
}