Bonjour � tous,
Je ne poste pas ici pour demander comment faire un script mais pour vous demander ce que pensez de cette m�thode que je trouve bien trop complexe pour une si simple t�che..
Je d�veloppe :
Il s'agit d'un script permettant de g�rer le contenu de ses pages selon l'activation ou non du Javascript par l'utilisateur de fa�on tr�s simple et en PHP surtout.
De cette mani�re :
Mais pour cela il fallut que j'utilise des artifices assez extravagant, je d�tail ca :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 <?php if (!$_SESSION['js']) include_once 'gere_pas_js.php'; else include_once 'gere_js.php'; ?>
Tout en haut de chaque page je pense inclure ceci :
Et un peu plus bas entre les balises <head> et </head> :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php session_start(); $current_url = $_SERVER['REQUEST_URI']; if ($_GET['detected'] < (time() - 20) || !isset($_GET['detected'])) { $end_url = explode("?", $_SERVER['REQUEST_URI']); $_SESSION['old_get_vars'] = $end_url[1]; if (!preg_match("#^detected=.*$#", $_SESSION['old_get_vars'])) $filtred_args = explode("&detected", $_SESSION['old_get_vars']); $_SESSION['old_get_vars'] = $filtred_args[0]; $_SESSION['js'] = 1; } ?>
Le principe est le suivant :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 <?php if ($_GET['detected'] < (time() - 20) || !isset($_GET['detected'])) echo "<noscript><meta http-equiv=\"Refresh\" content=\"0;URL=include_de_test.php\"></noscript>"; ?>
L'utilisateur charge la page, on pr�tend qu'il a javascript activ�, ci ce n'est pas le cas une redirection se fait entre les balises <noscript> et </noscript> qui l'am�ne sur une page mettant la variable de session "js" � 0.
Il est ensuite redirig� sur la 1�re page qui sera charg�e en fonction de cette variable de session.
Si l'utilisateur a Javascript activ� ce sera transparent pour lui et aucune redirection ne sera faite, donc pas g�nant. Pour l'utilisateur ne le poss�dant pas il devra subir 2 redirections.
L'avantage c'est que de cette mani�re c'est tr�s simple de g�rer les cas avec ou sans Javascript.
Mais le soucis c'est que si le visiteur n'a pas Javascript, qu'il est averti sur le site et qu'il l'active, il faut que quand il actualise il soit pris en charge. Donc c'�tait un peu le bazard de savoir quand recharger la page pour que d'un cot� il puisse activer Javascript quand il veut, et d'un autre que �a parte pas en boucle infinie.
J'ai donc utilis� time() en testant si la page a �t� d�tect�e il y a plus ou moins de 20 secondes..
Mais il y avait aussi le probl�mes des variables pass�es en param�tres par la m�thode GET, il faut les conserver et ca oblige un petit parsing de la cha�ne.. encore et encore du calcul..
Je ne maitrise pas encore bien PHP et il y a surement des m�thodes de parsing bien plus efficaces et rapides pour faire ce que je fais avec 2 explode().
Pour cela je m'en remet aux sp�cialistes
Pour finir voila le code tout b�te de la page de redirection, mais qui inflige encore pas mal de calcul au serv... :
Voila c'est un peu la gal�re de conditionner avec un langage serveur quelque chose qui d�pend du client, et c'est il me semble totalement impossible � faire en 1 seul chargement de page.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 <?php session_start(); $_SESSION['js'] = 0; $old_vars = (!empty($_SESSION['old_get_vars'])) ? "?".$_SESSION['old_get_vars']."&detected=".time() : "?detected=".time(); echo "<meta http-equiv=\"Refresh\" content=\"0; test.php".$old_vars."\">"; ?>
J'ai pas mal cherch� sur le net une solution simple et rapide mais sans succ�s, c'est toujours des magouilles parfois allant assez loin pour finalement pas grand chose.
Voila merci d'avoir lu le pav�.. j'esp�re que ca pourra quand m�me aider certains d'entre vous qui se demandais comment faire![]()
Partager