Détecter le JavaScript en PHP

Eléphanteau du PHP | 29 Messages

26 oct. 2009, 00:29

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 ?
Bienvenue sur :
http://france.webmaster.fr.free.fr
Fabrication en cours...

ViPHP
ViPHP | 4674 Messages

27 oct. 2009, 11:14

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à :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 2937 Messages

27 oct. 2009, 11:23

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. ;)

Eléphanteau du PHP | 29 Messages

28 oct. 2009, 17:23

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...
Bienvenue sur :
http://france.webmaster.fr.free.fr
Fabrication en cours...

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

29 oct. 2009, 11:18

en fessant des recherches
Ça leur a plu ? :P

ViPHP
ViPHP | 4674 Messages

29 oct. 2009, 14:50

C'est un faux problème en fait :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 29 Messages

09 nov. 2009, 18:34

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 )
Bienvenue sur :
http://france.webmaster.fr.free.fr
Fabrication en cours...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 nov. 2009, 19:30

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:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 4674 Messages

09 nov. 2009, 19:58

Tout à fait :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).