JavaScript-Fähigkeit mit PHP ermitteln

Don Stefano

Erfahrenes Mitglied
Hallo zusammen,

gibt es eigentlich eine Möglichkeit mit php zu prüfen, ob der Browser des Users Javaskript unterstützt bzw. ob dies im Browser aktiviert ist?

Ich würde gern dementsprechend entweder ein Javaskript aktivieren oder (falls der Browser dies nicht unterstützt) einen anderen Code-Abschnitt.

Vielen Dank für Hinweise!
 
Soweit ich weiß, gibts es dazu hier irgendwo einen Codeschnippsel von Dennis Wronka oder Sven Mintel. Musst mal danach suchen.
 
Es ist besser, die Dokumente zuerst ganz ohne JavaScript-Unterstützung zu entwickeln. Anschließend kann immer noch JavaScript als Sahnehäubchen hinzugefügt werden.
 
fanste hat gesagt.:
Soweit ich weiß, gibts es dazu hier irgendwo einen Codeschnippsel von Dennis Wronka oder Sven Mintel. Musst mal danach suchen.
Ja, das gibt es, und zwar hier.

Und wie Gumbo schon sagte sollte erstmal ohne JS entwickelt werden und dann fuer optionale Funktionen JS genutzt werden. Ich zum Beispiel nutze JavaScript in meinem Forum dafuer um solche netten Formatierungsbuttons wie hier im Forum anzubieten.
 
Genauso mache ich es auch. Erst mal soll alles ohne Java Skript funktionieren. Optional soll dann an einigen Stellen Java verwendet werden, sofern der Browser das unterstützt.

Danke für den Hinweis auf den Beitrag von Dennis. Ich habe ihn jetzt 3 mal gelesen und verstehe aber leider immer noch nicht, welcher Befehl bzw. welche Codepassage nun ermittelt, ob Java Skript zur Verfügung steht.

Das muss ja wohl irgendwie hier stattfinden:
PHP:
 <?php 
if ($_GET["sessionid"]) 
    { 
        $sessionid=$_GET["sessionid"]; 
        session_id($sessionid); 
    } 
session_start(); 
if (!isset($sessionid)) 
    { 
        $sessionid=session_id(); 
    } 
include("connectdb.php"); 
$sessions=mysql_query("select * from sessions where sessionid='$sessionid'",$db); 
$session=mysql_fetch_assoc($sessions); 
mysql_close($db); 
if (!$session) 
    { 
        header("Location:clientcheck.php?sessionid=".$sessionid); 
    } 
?>
bzw. in dem folgenden Teil:

PHP:
 <?php 
$sessionid=$_GET["sessionid"]; 
if (!$_GET["check"]) 
    { 
        setcookie("test","test",time()+3600); 
        ?> 
        <html> 
        <head> 
<meta http-equiv="refresh" content="0;url=clientcheck.php?check=2&amp;sessionid=<?php printf($sessionid); ?>"> 
        <script type="text/javascript"> 
        top.location.href="clientcheck.php?check=1&sessionid=<?php printf($sessionid); ?>"; 
        </script> 
        </head> 
        </html> 
        <?php 
    } 
else 
    { 
        if ($_COOKIE["test"]=="test") 
            { 
                $cookies=1; 
            } 
        else 
            { 
                $cookies=0; 
            } 
        setcookie("test","test",time()-3600); 
        if ($_GET["check"]==1) 
            { 
                $javascript=1; 
            } 
        else 
            { 
                $javascript=0; 
            } 
        include("connectdb.php"); 
        mysql_query("insert into sessions (sessionid,cookies,javascript) values ('$sessionid','$cookies','$javascript')",$db); 
        mysql_close($db); 
        if ($cookies==1) 
            { 
                header("Location:index.php"); 
            } 
        else 
            { 
                header("Location:index.php?sessionid=".$sessionid); 
            } 
    } 
?>
Ich verstehe leider nicht, wie nun die Javaskript Prüfung funktioniert. Kann das jemand von euch nachvollziehen und mit vielleicht in einfachen Worten kurz erläutern?
 
Hmm, ich dachte ich haette das in dem Tutorial vernuenftig erklaert.
Noch mal kurz:
Es ist das 2. von Dir gepostete Script.
Beim ersten Aufruf wird dies Script direkt neu geladen, entweder durch JavaScript oder durch einen HTML-Meta-Refresh. Je nachdem wird der Parameter check anders belegt. Anhand dessen kann das Script dann entscheiden ob JavaScript aktiviert ist oder nicht. Dies wird dann, zusammen mit der SessionID, in der Datenbank eingetragen und steht somit spaeter zu jedem Zeitpunkt zur Verfuegung.
 
Wozu so kompliziert? Es geht auch viel einfacher:
PHP:
<?php

	var_dump( isset($_GET['javascript']) );

?>
<script type="text/javascript">
if( !window.location.search.match(/[?&]javascript(&|$)/) ) {
	var newHref = window.location.href;
	if( window.location.search != "" ) {
		newHref += "&javascript";
	} else {
		newHref += "?javascript";
	}
	window.location.replace(newHref);
}
</script>
Ich hoffe, es funktioniert. Das Ganze ließe sich auch statt eines URL-Arguments mit Cookies verbinden.
 
Gumbo hat gesagt.:
Das Ganze ließe sich auch statt eines URL-Arguments mit Cookies verbinden.
Das Script ueberprueft ja nicht nur ob JavaScript aktiviert ist sondern auch ob Cookies angenommen werden. Da man das zu dem Zeitpunkt noch nicht weiss waere der Weg ueber Cookies wohl nicht gerade der beste.
 
Genau genommen war ja auch nicht die Frage, ob der Browser Cookies akzeptiert, sondern ob JavaScript aktiviert ist. Und das regelt mein Vorschlag wesentlich effizienter als deiner.

Doch um auch die Prüfung von Cookies mit einzubinden:
PHP:
<?php

	var_dump( isset($_GET['javascript']) );
	var_dump( isset($_COOKIE['javascript-cookies']) );

?>
<script type="text/javascript">
if( !window.location.search.match(/[?&]javascript(&|$)/) ) {
	document.cookie = "javascript-cookies=true";
	var newHref = window.location.href + ( window.location.search != "" ? "&" : "?" ) + "javascript";
	window.location.replace( newHref );
}
</script>
 
Gumbo hat gesagt.:
Genau genommen war ja auch nicht die Frage, ob der Browser Cookies akzeptiert, sondern ob JavaScript aktiviert ist. Und das regelt mein Vorschlag wesentlich effizienter als deiner.
Das ist schon richtig, aber was bei Deinem Code nun wieder der Nachteil ist, ist dass Cookies nur getestet werden wenn JavaScript funktioniert, und das ist bei mir unabhaengig voneinander. Auch wenn das natuerlich in dem Thread jetzt garnicht Thema war. ;)
Und ich seh auch in Deinem Codeschnipsel den Teil mit dem Meta-Refresh nicht. Es muss ja erstmal einmal umgeleitet werden damit PHP wissen kann ob JavaScript und/oder Cookies aktiviert sind, und die Weiterleitung erfolgt bei Dir, zumindest laut Code, ausschliesslich ueber JavaScript.
Man koennte natuerlich, bei einer reinen JavaScript-Erkennung, davon ausgehen, dass wenn keine Umleitung stattfindet JavaScript nicht aktiviert ist, aber im Grunde find ich meine Variante doch irgendwo besser, da man dann wirklich eine klare Aussage bekommt und somit ganz klar sagen kann: Okay, Tests abgehakt, weiter im Text.
 

Neue Beiträge

Zurück