JavaScript-Fähigkeit mit PHP ermitteln

Das ist mir auch aufgefallen. Aber ich geb’ noch nicht auf:
PHP:
<?php

	setCookie('http-cookies', 'true');
	if( !isset($_GET['redirected']) ) {
		$newURL = $_SERVER['REQUEST_URI'] . (empty($_GET) ? '?' : '&') . 'redirected';
		header('Refresh: 0;url='.$newURL);
		echo '<meta http-equic="Refresh" content="0;url='.$newURL.'">';
	}

?>
<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>

…

<?php
	
	echo '<p>JavaScript is '.( isset($_GET['javascript']) ? 'enabled' : 'disabled' ).'</p>';
	echo '<p>Cookies (JavaScript) are '.( isset($_COOKIE['javascript-cookies']) ? 'enabled' : 'disabled' ).'</p>';
	echo '<p>Cookies (HTTP) are '.( isset($_COOKIE['http-cookies']) ? 'enabled' : 'disabled' ).'</p>';

?>
 
Erst mal vielen Dank für eure Hilfe und sorry, dass ich mich erst heute wieder zu Wort melden kann - ich war in den letzten Tagen einfach zu stark eingespannt.

Was ich eigentlich benötige (und leider weiß ich immer noch nicht genau, wie ich das machen kann) ist eine IF-Verzweigung, die in der Bedingung die Javaskript Fähigkeit überprüpft.

Leider sind Java Skript und auch Cookies für mich absolutes Neuland (auch noch mal der Hinweis, dass ich kein Programmierer bin und mir mein PHP/SQL-Wissen selbst angeeignet habe.) Daher verstehe ich vielleicht manches nicht auf Anhieb was für euch einfach nachzuvollziehen ist.

Ich benötige jedenfalls vom Prinzip her eine Abfrage folgender Art (wobei dann aber in den geschweiften Klammern viel mehr Code stehen würde):

PHP:
 IF (Javaskript vorhanden?) {
echo "Javaskript steht zur Verfügung";}

ELSE                 {
echo "Javaskript steht nicht zur Verfügung";}
Müßte ich nun dazu die IF-Bedingung lediglich folgendermaßen gestalten?

PHP:
IF( !window.location.search.match(/[?&]javascript(&|$)/) ) {
    document.cookie = "javascript-cookies=true";
    var newHref = window.location.href + ( window.location.search != "" ? "&" : "?" ) + "javascript";
    window.location.replace( newHref ); 
echo "Javaskript steht zur Verfügung";
}
und kann mir den oberen Teil mit

PHP:
setCookie('http-cookies', 'true');
    if( !isset($_GET['redirected']) ) {
        $newURL = $_SERVER['REQUEST_URI'] . (empty($_GET) ? '?' : '&') . 'redirected';
        header('Refresh: 0;url='.$newURL);
    }
sparen wenn ich nicht auch die Cookie-Fähigkeit abfragen möchte?

Oder benötige ich den oberen Teil und eine Abfrage in dieser Art?
PHP:
 IF (isset($_COOKIE['javascript-cookies']) {
 echo "Javaskript steht zur Verfügung";
                                       }
Mein Problem ist einfach, dass ich nicht verstehe, was Gumbos Code da wirklich im Detail macht.
 
Du JavaScript-Erkennung mit PHP laeuft folgendermassen ab:
  1. Das PHP-Script prueft ob ein bestimmter Wert (nennen wir ihn mal check) am URL angehaengt wurde.
  2. Im ersten Durchgang ist dies natuerlich nicht der Fall und eine HTML-Seite mit einem Meta-Refresh und etwas JavaScript ausgegeben.
    Sowohl der Meta-Refresh als auch das JavaScript rufen die Datei wieder auf, und zwar mit angehaengtem Parameter check. Der Meta-Refresh setzt check=2, JavaScript setzt check=1.
    Der Meta-Refresh greift nur wenn JavaScript nicht zur Verfuegung steht.
  3. Das Script prueft nun wieder ob check uebergeben wurde.
  4. Diesmal wurde der Wert uebergeben und somit wird nun geprueft ob check==1 ist, was bedeutet, dass die Seite mittels JavaScript neu geladen wurde und dieses somit zur Verfuegung steht.
Hier nochmal ein wenig Code (den ich spaeter mit einem anderen Script zusammengepackt hab um oben verlinktes Tutorial zu schreiben):
javascriptcheck.php
PHP:
<html>
<head>
<?php
if (!isset($_GET["check"]))
	{
		printf("<meta http-equiv='refresh' content='0,url=javascriptcheck.php?check=2'>");
		printf("<script type='text/javascript'>");
		printf("top.location.href='javascriptcheck.php?check=1';");
		printf("</script>");
	}
?>
</head>
<body>
<?php
if (isset($_GET["check"]))
	{
		if ($_GET["check"]==1)
			{
				printf("JavaScript is enabled<br>");
			}
		else
			{
				printf("JavaScript is disabled<br>");
			}
	}
?>
<a href="javascriptcheck.php">Check if JavaScript is enabled</a>
</body>
</html>
 
Hallo Dennis,

vielen lieben Dank. Das hilft mir sehr den Code zu verstehen. Ich werde das Ganze in einigen Tagen einmal ausprobieren, zuvor sind leider noch andere Dinge zu programmieren.

Sollte ich damit Probleme haben melde ich mich in diesem Thread noch einmal zu Wort. Fürs erste werde ich den Beitrag aber mal als erledigt markieren.
 
Zurück