Datenaustausch mit JavaScript

Habe alle Beiträge zu dem Thema durch und mein Problem ist immer
noch nicht gelöst. Also mir ist sehr wohl bewusst, dass PHP server-
seitig und JS clientseitig ist. Und dass man Daten nur über Formular
austauschen kann auch. Aber zur Sache. In folgendem Script, dass
in einem versteckten Frame sitzt, werden Besucherdaten ausgelesen:

<!-- var hoehe = screen.height;
var breite = screen.width;
var browser = navigator.appName; //–>

Diese sollen OHNE neuen Aufruf des Fensters (wäre ja auch von einem
Besucher ein bisschen viel verlangt) in ein php-script übergeben
werden, welches die Daten in eine Datenbank zu späteren statistischen
Auswertungen schreibt. Bin mit meinem Latein am Ende.

Habe alle Beiträge zu dem Thema durch und mein Problem ist
immer
noch nicht gelöst. Also mir ist sehr wohl bewusst, dass PHP
server-
seitig und JS clientseitig ist. Und dass man Daten nur über
Formular
austauschen kann auch. Aber zur Sache. In folgendem Script,

…über URL geht auch…

dass
in einem versteckten Frame sitzt, werden Besucherdaten
ausgelesen:

<!-- var hoehe = screen.height;
var breite = screen.width;
var browser = navigator.appName;

document.write(’<img src=„bla.php?h=’+hoehe+’&w=’+breite+’&browser=’+escape(browser)+’“>’);

Das bla.php sollte dann ein geeignetes Bild zurückgeben, ggf. mit Header(„Location: …“);

Auf die Art kann man natürlich auch gleich im Frameset den gesamten Frameset-Code generieren und die Parameter dran anhängen. Allerdings sollte es dann eine <noscript> Variante geben. Natürlich kann man auch irgendweinen Frame mit einer neuen URL versehen, in welche die Daten codiert werden, etc.

Alexander

Erst mal danke für den Hilfeversuch. Muss ich erst mal verdauen, weil weiß ehrlich gesagt nicht so genau, wie das gemeint ist, z.B. wieso die Browserangabe mit escape() in Hexadezimal umgewandelt wird und was für ein geeignetes Bild. Hier mal mein Code bisher:

// Hier die Datenermittlung, wo auch Monitorgröße und
// Browser ermittelt werden sollen:
// ==================================================

$ipadress = gethostbyname($REMOTE_ADDR);
$hostname = gethostbyaddr($REMOTE_ADDR);
$datum = date(„Y-m-d“);

// Hier werden die Daten in die Datenbank geschrieben:
// ===================================================

$sql = „SELECT * FROM $tabelle“;
$ausgabe = mysql_query($sql, $datenbank);
while($row = mysql_fetch_array($ausgabe))
{
mysql_query(„INSERT INTO $tabelle (ip, host, datum, monitor, browser)
VALUES(’$ipadress’, ‚$hostname‘, ‚$datum‘, ‚$monitor‘, ‚$browser‘)“);
}

Kannst Du Deine Methode da jetzt mal einfügen ? Wäre klasse.

Gruß
Tom

Hallo Tom!

Um den Browser zu ermitteln, brauchst Du nur die
Umgebungsvariable HTTP_USER_AGENT in PHP abzufragen
und keine Verrenkungen über JavaScript machen:

$ipadress = gethostbyname($REMOTE_ADDR);
$hostname = gethostbyaddr($REMOTE_ADDR);

$browser = $HTTP_SERVER_VARS[„HTTP_USER_AGENT“];

Um alle Informationen auszugeben, die Dir serverseitig
zur Verfügung stehen, schau Dir mal das Array $HTTP_SERVER_VARS an:

echo "

";
foreach ($HTTP_SERVER_VARS as $k => $v){
echo „- $k: $v
\n“;
}
echo „“;

Grüße nach St. Wendel (hab dort einen
guten Teil meines Zivildiensts verbracht),
-Andreas.

$HTTP_SERVER_VARS funktioniert klasse.
Werde allerdings um die Verrenkung nicht rumkommen,
weil die Monitorauflösung ziemlich wichtig ist und
die kann ich wohl nur direkt vom Client abfragen
und das halt eben über JS.
Trotzdem Danke und Gruß zurück

Tom

Erst mal danke für den Hilfeversuch. Muss ich erst mal
verdauen, weil weiß ehrlich gesagt nicht so genau, wie das
gemeint ist, z.B. wieso die Browserangabe mit escape() in
Hexadezimal umgewandelt wird und was für ein geeignetes Bild.

escape: In der URL sind einige Zeichen nicht gültig, ggfs. ist beim Browserstring so etwas dabei.

PHP-seitig im Prinzip ganz einfach, wenn du die URL per JavaScript so schreibst, kannst du einfach mit $_GET[„w“] und $_GET[„h“] die per JavaScript übergebenen Variablen abfragen.

Wenn du das Frameset samt URLs per JavaScript erzeugst, dann direkt in der PHP-Datei, ansonsten (bei dem Bild) in einer eigenen Datei, welche nach dem Speichern auf ein Bild (.gif, 1x1 Pixel, der eine Pixel transparent) umleitet mit Header("Location: http://www.example.com/1x1.gif");. Hier musst du nur bedenken, das du da Sessions bemühen musst, um das „Bild“ mit den Daten dem Nutzer zuzuordnen. Und die Daten hast du erst, nachdem die Seite gelanden wurde, also nicht beim ersten Aufruf der HTML-Datei. Frameset schreiben mit JavaScript ist vielleicht einfacher, also auf der Startseite das JS vom 1. Posting, nur statt