Page 1 sur 1

Détecter le JavaScript en PHP

Posté : 26 oct. 2009, 00:29
par NewDeveloppeur
Bonjour,

Je vous propose une fonction qui permet de détecter le JavaScript :
<?php

function etat_du_javascript()
{
	$page = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
	
	$file = @fopen($page, 'r');
	
	if($file)
	{
		$page = basename($_SERVER["SCRIPT_NAME"]);
	}
	else
	{
		$page = basename($_SERVER["PHP_SELF"]);
	}
	
	if (isset($_GET["js"]))
	{
		$js = $_GET["js"];
		
		if($js == "no")
		{
			echo '<script type="text/javascript">window.setTimeout("location=(\''.$page.'?js=yes\');",0)</script>';
			$etat = 'desactive';
		}
		elseif($js == "yes")
		{
			echo '<noscript><meta http-equiv="refresh" content="0;url=./'.$page.'?js=no"/></noscript>';
			$etat = 'active';
		}
		else
		{
			echo '<noscript><meta http-equiv="refresh" content="0;url=./'.$page.'?js=no"/></noscript>';
			$etat = 'active';
		}
	}
	else
	{
		echo '<noscript><meta http-equiv="refresh" content="0;url=./'.$page.'?js=no"/></noscript>';
		$etat = 'active';
	}
	
	return $etat;
}

echo etat_du_javascript();

?>
La fonction retourne " active " ou " desactive ", mais on peut utiliser " 1 " ou " 0 ", ou encore " true " ou " false "...

Mais c'est à perfectionner... Cette fonction utilise l'actualisation... Donc si on est sur une page qui affiche du Java Script mais que cette page réceptionne un champs de formulaire POST ou GET, bah il seront pas réceptionné bien comme il faut...

- Il faudrait faire un FOR ou un WHILE pour réceptionner tout les POST et GET (peut importe le nom, et la longueur du nom., pour ça on peut utiliser une REGEX) puis par la suite les ré-émettre...

- Il faudrait aussi détecter si il y a déjà une redirection dans la page pour éviter de généré une erreur...


Si ça fonctionne ça pourrait devenir une fonction officiel non ?

Re: Détecter le JavaScript en PHP

Posté : 27 oct. 2009, 11:14
par Hywan
Hey :-),

Partir sur l'idée de rafraîchir la page est une mauvaise idée. Tu te compliques la vie et il y aura toujours des cas où ça va te poser des problèmes (avec des authentifications, des sessions, des requêtes externes etc.).

Pourquoi vouloir savoir si Javascript est activé ou pas ? Je pense qu'il faut commencer par là :-).

Re: Détecter le JavaScript en PHP

Posté : 27 oct. 2009, 11:23
par Victor BRITO
Et d'ailleurs, pourquoi vouloir détecter le JavaScript alors que le concept de JavaScript non intrusif permet de se passer de cette volonté ? Formulé autrement, il faut que le code soit, à la base, codé de façon à ce qu'il soit utilisable lorsque le JavaScript est désactivé. De plus, on peut très bien laisser l'élément HTML noscript dans le code source même si JavaScript est activé : les navigateurs qui lisent le JavaScript savent parfaitement ignorer cet élément. ;)

Re: Détecter le JavaScript en PHP

Posté : 28 oct. 2009, 17:23
par NewDeveloppeur
Ouais, vous avez raison, mais en fessant des recherches j'ai vu plein de monde sur les forum qui cherchait ce genre de code en php...

Le principe de l'actualisation est en effet un très gros problème, pour ma part je me contente de <noscript>... Si j'ai posté ce code ce n'est pas pour moi, mais pour tout ces gens qui en aurait besoin, alors je leur laisse la possibilité d'améliorer ça...

Même si le code fait 10 000 ligne, bah ça sert à ça les fonctions, à ne la réduire qu'a une seule... Par contre ça va réduire le temps d'affichage...

Re: Détecter le JavaScript en PHP

Posté : 29 oct. 2009, 11:18
par naholyr
en fessant des recherches
Ça leur a plu ? :P

Re: Détecter le JavaScript en PHP

Posté : 29 oct. 2009, 14:50
par Hywan
C'est un faux problème en fait :-).

Re: Détecter le JavaScript en PHP

Posté : 09 nov. 2009, 18:34
par NewDeveloppeur
C'est un faux problème en fait :-).
Ce n'est pas un problème, je propose juste ma contribution au développement... Après chacun en fait ce qu'il en veut...
Ça leur a plu ? :P
Je pense pas puisqu'il n'y a toujours pas de solution. ( enfin, sans redirection )

Re: Détecter le JavaScript en PHP

Posté : 09 nov. 2009, 19:30
par zeus
C'est un faux problème en fait :-).
Ce n'est pas un problème, je propose juste ma contribution au développement... Après chacun en fait ce qu'il en veut...
Exactement l'esprit d'une contribution :pouce:

Re: Détecter le JavaScript en PHP

Posté : 09 nov. 2009, 19:58
par Hywan
Tout à fait :-).