JavaScriptaktivierung in Textdatei speichern
PHP-Neuling
- php
Guten Abend,
ich bin was PHP angeht noch ein Neuling und stehe vor einen, für mich, sehr schwerigen Problem. Alle meine bisherigen Versuche waren leider ohne Erfolg. Es wäre nett, wenn ihr mir dabei helfen könntet. Nun zu meinen Problem:
Ich möchte mit Hilfe einer Textdatei speichern, ob der jeweilige User, der sich gerade auf meiner Webseite aufhält JavaScript in seinen Browser aktiviert hat oder deaktiviert hat. Hinzukommend soll noch gespeichert werden, mit welchen Browser er die Webseite besucht. Dies soll aber alles im Hintergrund geschehen ohne das dem User etwas angezeigt wird.
Könnt ihr mir bitte dabei helfen?
Vielen Dank
Moin Moin !
Du brauchst die sehr wahrscheinlich die Tags <SCRIPT> und <NOSCRIPT>, und vielleicht noch zwei oder drei Zeilen Javascript. Steht alles in SelfHTML. Ganz im Hintergrund wird es nicht gehen, aber ein "weiter"-Link oder -Button könnte die Information über Javascript zum Server schieben. Den benutzten Browser kannst Du näherungsweise aus HTTP_USER_AGENT ziehen.
Alexander
Hallo,
Ich möchte mit Hilfe einer Textdatei speichern, ob der jeweilige User, der sich gerade auf meiner Webseite aufhält JavaScript in seinen Browser aktiviert hat oder deaktiviert hat.
das geht nicht, da javascript clientseitig abläuft php aber auf dem Server.
Hinzukommend soll noch gespeichert werden, mit welchen Browser er die Webseite besucht.
den Useragent kannst du mit $_SERVER["HTTP_USER_AGENT"] abfragen.
Dies soll aber alles im Hintergrund geschehen ohne das dem User etwas angezeigt wird.
das ist kein Problem, da php ja auf dem Server läuft, und der User nichts davon mitbekommt, was das script macht, bevor bei ihm die generierte Seite ankommt.
Könnt ihr mir bitte dabei helfen?
Wie sollen die Daten denn genau gespeichert werden? Was hast du bisher gemach bzw. versucht? Dein Problem musst du noch mal etwas genauer schildern.
Grüße aus Nürnberg
Tobias
Moin!
Ich möchte mit Hilfe einer Textdatei speichern, ob der jeweilige User, der sich gerade auf meiner Webseite aufhält JavaScript in seinen Browser aktiviert hat oder deaktiviert hat.
das geht nicht, da javascript clientseitig abläuft php aber auf dem Server.
Das geht sehr wohl. Es gibt tausend Möglichkeiten, wie der Server in Erfahrung bringen kann, ob auf dem Client Javascript läuft.
Beispielsweise so:
<script type="text/javascript" source="detector.php"></script>
detector.php:
<?php
header("Content-type: text/javascript");
echo "// What do you expect here?";
#... und hier dann die Tatsache, dass der Client Javascript kann, vermerken.
Das Problem ist nur, diese Information dann an einer zentralen Stelle zusammenzuführen. Üblicherweise kriegt man es nämlich nur in Sessions (oder mit Session-ähnlichen Mechanismen) hin, die Information "Client kann Javascript" zum nächsten Script durchzureichen. Die erste aufgerufene Seite besitzt die Information, dass der Client Javascript kann, definitiv noch _nicht_. Hier gilt in der Tat die Reihenfolge, dass zuerst auf dem Server PHP aktiv ist, und danach auf dem Client Javascript. Aber sobald (wie oben als Beispiel genannt) der Client dem Server wieder Informationen zurückschickt, können diese für weitere Requests genutzt werden.
Ach ja, beim Verfolgen von Links könnte man das übrigens ganz banal rausfinden, indem man so vorgeht:
<a href="normaleseite.php" onclick="location.href='normaleseite.php?js=on'; return false;">Ein Link</a>
Auf diese Weise kriegt die neue Seite mit, ob Javascript zur Verfügung steht. Aber wie gesagt: Das kann frühestens der zweite Request herausfinden.
- Sven Rautenberg
Hi,
Auf diese Weise kriegt die neue Seite mit, ob Javascript zur Verfügung steht.
... ob Javascript bei der ersten Seite zur Verfügung stand.
Die Javascript-Aktivierung ist keine Konstante und kann sich jederzeit ändern...
cu,
Andreas
Hallo, Andreas,
Auf diese Weise kriegt die neue Seite mit, ob Javascript zur Verfügung steht.
... ob Javascript bei der ersten Seite zur Verfügung stand.
Nicht nur das, es ist viel diffuser.
Wir reden von nonlinearem Hypertext, jede Seite kann die erste Seite sein. Jede Seite muss folglich für sich, selbst wenn sie mit ?js=on aufgerufen wird, weil jemand die Seite damit unwissend verlinkt, muss sie auch ohne JavaScript nutzbar sein oder zumindest soweit abwärtskompatibel sein, dass sie jedem/jeder BenutzerIn eine passende Fehlernachricht und eine Alternative anbietet - nämlich in der Regel die Version ohne JavaScript, sofern JavaScript als Zusatz verwendet wird; und erst wenn für diese spezielle Session gesichert ist, dass JavaScript aktiviert ist, - sofern dies überhaupt annähernd zuverlässig gelöst werden kann - kann mit dem Gedanken gespielt werden, Folgeseiten, die der/die BenutzerIn aufruft, anzubieten, auf welchen JavaScript obligat ist, sofern diese in keiner Sequenz stehen, wie es beispielsweise beim Stempelgeheimnis der Fall ist, bei welchem eine Weiche auf der Eingangsseite reicht und deren einzelne Verlinkung wenig Sinn hätte.
Eine Hauptnavigation erst auf der zweiten Seite in JavaScript zu lösen kann mitunter problematisch werden; selbst wenn es gesicherte Beweise über JavaScript-Unterstützung gibt, ist diese im Endeffekt inkonsequente weil wechselnde Navigation für den/die BenutzerIn sicherlich nicht auf Anhieb verständlich. Ich halte generell wenig davon, Seiten sessionbasiert zu generieren, sofern es nur darum geht, ein Features zu benutzen, welches durch noscript etc. auch ohne die komplexe Überprüfung »geschmeidig abwärts transformiert«.
Die Javascript-Aktivierung ist keine Konstante und kann sich jederzeit ändern...
Genau.
Ein zuverlässiges System zu bauen, welches die Schritte des/der BenutzerIn mittels Sessions überwacht und annähernd sicher feststellt, dass JavaScript aktiviert ist, wäre vermutlich eine Sisyphosarbeit, zumal jederzeit sowieso ein Link zur JavaScript-freien Version angeboten werden müsste, sofern kein punktuelles noscript möglich ist... Folglich sollte entweder JavaScript als Barriere eingesetzt werden - der/die BenutzerIn kann in dem Falle zumindest darüber informiert werden, wenn die Seite JavaScript-Unterstützung zwingend benötigt, beispielsweise wenn es ein DHTML-Experiment zum Selbstzweck ist - oder eine einzige kombinierte Version, welche JavaScript optional einsetzt, was für die meisten auf Grafiken und Text basierenden Seiten, welche JavaScript in erster Linie für optische Gimmicks als für Hypertextaufgaben verwenden, am passendsten ist.
Mathias
HAllo,
Ich möchte mit Hilfe einer Textdatei speichern, ob der jeweilige User, der sich gerade auf meiner Webseite aufhält JavaScript in seinen Browser aktiviert hat oder deaktiviert hat. Hinzukommend soll noch gespeichert werden, mit welchen Browser er die Webseite besucht. Dies soll aber alles im Hintergrund geschehen ohne das dem User etwas angezeigt wird.
Das geht mit einer Mischung von JavaScript und PHP.
In dem HTML-Dokument schreibst du irgend wo:
+--------------------------+
<script language="JavaScript" type="text/javascript">
<!--
var x = new Image();
x.src = "pfad_zu_deinem_skript/register.php?js=1";
//-->
</script>
+--------------------------+
und im Body kommt noch dazu:
+--------------------------+
<noscript><img src="pfad_zu_deinem_skript/register.php?js=0" width="1" height="1" alt=""></noscript>
+--------------------------+
d.h. es wird dein PHP Programm "register.php" mit dem parameter "js" aufgerufen der entweder auf "0" oder "1" steht.
Wenn er auf "1" steht ist JavaScript an, wenn er auf "0" steht ist JS aus. Den Browsertyp erkennst du am User_Agent. Guck dir mal die Umgebungsvariablen von PHP an. Da findet sich sowas. Dein Skript sollte danbn aber wirklich ein 1x1 Bild zurückbringen. Das geht am einfachsten durch eine HTTP-Location Anweisung.
Alles unsichtbar für den User(*), ab der 1. Seite. Das Abspeicher in eine Datei bleibt dir als Fleißaufgabe :-)
*) abgesehen von einem zusätzlicne Verbindungsaufbau, d.h. deine Seite ist etwas langsamer.
*) Mache Filtersoftware filtert diese 1x1 Grafiken (aus dem noscript-tag) raus.
By
Reinhard
Moin!
Das geht mit einer Mischung von JavaScript und PHP.
In dem HTML-Dokument schreibst du irgend wo:
+--------------------------+
<script language="JavaScript" type="text/javascript">
<!--
var x = new Image();
x.src = "pfad_zu_deinem_skript/register.php?js=1";
//-->
</script>
+--------------------------+und im Body kommt noch dazu:
+--------------------------+
<noscript><img src="pfad_zu_deinem_skript/register.php?js=0" width="1" height="1" alt=""></noscript>
+--------------------------+
Das ist durchaus mit der von mir vorgeschlagenen Lösung identisch.
d.h. es wird dein PHP Programm "register.php" mit dem parameter "js" aufgerufen der entweder auf "0" oder "1" steht.
Ja, aber was nützt das jetzt für den Seitenaufbau der _aktuellen_ Seite?
Wenn er auf "1" steht ist JavaScript an, wenn er auf "0" steht ist JS aus. Den Browsertyp erkennst du am User_Agent. Guck dir mal die Umgebungsvariablen von PHP an. Da findet sich sowas. Dein Skript sollte danbn aber wirklich ein 1x1 Bild zurückbringen. Das geht am einfachsten durch eine HTTP-Location Anweisung.
Du drückst dich vor der Klärung der Frage, wie denn die Information 0 oder 1 in _Seiten_skripte kommt. Bislang weiß nämlich nur das Bildskript davon (und es sollte tunlichst ein Bild ausliefern, alles andere wäre nicht nett).
Alles unsichtbar für den User(*), ab der 1. Seite. Das Abspeicher in eine Datei bleibt dir als Fleißaufgabe :-)
Wie gesagt: _Ab_ der ersten Seite, nicht _auf_ der ersten Seite.
Grob zusammengefaßt kann man sagen: Entweder man liefert gleich auf der ersten Seite eine aus, welche auch ohne Javascript auskommt, oder eben nicht. Das Feststellen, ob Javascript eingeschaltet ist, nützt dem eigenen Skript meist absolut nichts - es würde die Programmierung meist verkomplizieren und einen zusätzlichen Fehlerfaktor ins Spiel bringen. _Alles_, was ein serverseitiges Skript realisieren könnte, kann ebensogut als kombinierte Version komplett ausgeliefert werden und ist dabei noch eine Stufe kompatibler.
Für statistische Zwecke ist deine Methode natürlich einsetzbar. Dazu muss man aber nicht mal einen skriptfähigen Webspace haben - es reicht vollkommen aus, einfach ein existierendes Bild mit Parameter einzubinden. Wenn man Zugriff auf die Logfiles hat, kann man hinterher diesen Parameter auswerten.
- Sven Rautenberg
HAllo,
Das ist durchaus mit der von mir vorgeschlagenen Lösung identisch.
Im wesentlichen ja.
d.h. es wird dein PHP Programm "register.php" mit dem parameter "js" aufgerufen der entweder auf "0" oder "1" steht.
Ja, aber was nützt das jetzt für den Seitenaufbau der _aktuellen_ Seite?
Nix. Das war aber auch nicht gefragt.
Du drückst dich vor der Klärung der Frage, wie denn die Information 0 oder 1 in _Seiten_skripte kommt. Bislang weiß nämlich nur das Bildskript davon (und es sollte tunlichst ein Bild ausliefern, alles andere wäre nicht nett).
Ich drück mich um diese Frage weil diese nicht gestellt wurde.
Alles unsichtbar für den User(*), ab der 1. Seite. Das Abspeicher in eine Datei bleibt dir als Fleißaufgabe :-)
Wie gesagt: _Ab_ der ersten Seite, nicht _auf_ der ersten Seite.
Bei meiner Lösung bekommt man diese Infos von der 1. Seite wenn diese aufgerufen wird. Und nicht erst wenn, innerhalb der Seite, weitergeklickt wird.
Wenn es darum geht _für_ eine Site zu entscheiden ob JS an oder aus ist, ist deine Technik besser. Geht es um Statistik (wie ich annehme) ist meine besser.
By
Reinhard