Voir aussi
Dans la même rubrique :
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Page contact en PHP 2/3
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Page Erreur 404 en PHPDu même auteur :
Reprendre un document Word
Les Centres de santé
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Menu de navigation sans JavaScript
Exécuter un Javascript dans une page SPIP
Astuce pour les images fréquemment utilisées
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Quiz en PHP 1/3
Quiz en PHP 2/3
Page contact en PHP 1/3
Réaliser un formulaire de contact (1/4)
Quand JavaScript est désactivé... 2/2
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Un Editeur RSS pour votre site 2/2
Etablir un questionnaire statistique en ligne
Page contact en PHP 2/3
Réaliser un formulaire de contact (5/4)
Initiation au xhtml - 2
Syndication, comment s’y retrouver
Réaliser un formulaire de contact (2/4)
Belles icônes pas chères !
La Netiquette des forums
Astuce pour les images fréquemment utilisées
Initiation au xhtml - 1
Quand JavaScript est désactivé... 1/2
Page Erreur 404 en PHP
Un lecteur RSS pour votre site 2/2
Quiz en PHP 3/3
Utilisation de la classe easyRSS
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Ecrire ce qu’on veut dans SPIP
Contrôler l’accès d’une partie du site avec .htaccess
Soigner en ligne, un art impossible ?
Positionnement fixe... même avec Internet Explorer !
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Installer un script PHP pour les nuls
Analyser les réponses à une liste de questions
Réaliser un formulaire de contact (4/4)
Page contact en PHP 3/3
Tri et Histogramme
Comment intégrer Snap Shots à Rapidweaver ?
Un lecteur RSS pour votre site 1/2
Un Editeur RSS pour votre site 1/2
Webmasters : Comment mieux se référencer ?
Un serveur dédié pour les nuls
Javascript : n’oubliez pas Mac OS !
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Gestion d’une rubrique... en attendant SPIP
xhtml - 4 : Les entités
Publication Spip : forme et typographie
Proposer plusieurs styles pour votre site
Exécuter un Javascript dans une page SPIP
Réaliser un formulaire de contact (3/4)
Editer plusieurs fichiers de syndication 1/3
Créer une liste de QCM
Menu dépliant pour les rubriques
Editer plusieurs fichiers de syndication 2/3
Créer un forum à l’aide de phpBB
Le web structuré et sa présentation
Editer plusieurs fichiers de syndication 3/3
Comment faire migrer son site ?
Conseils pour débuter un site web
La syndication de contenu RSS
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Proposer plusieurs styles pour votre site
Page contact en PHP 2/3
Editer plusieurs fichiers de syndication 3/3
Installer un script PHP pour les nuls
Quand JavaScript est désactivé... 1/2
Positionnement fixe... même avec Internet Explorer !
Quiz en PHP 3/3
Page contact en PHP 1/3
Ecrire ce qu’on veut dans SPIP
Exécuter un Javascript dans une page SPIP
Gestion d’une rubrique... en attendant SPIP
Astuce pour les images fréquemment utilisées
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 2/3
Page contact en PHP 3/3
Syndication, comment s’y retrouver
Editer plusieurs fichiers de syndication 2/3
Quand JavaScript est désactivé... 2/2
Menu dépliant pour les rubriques
Page Erreur 404 en PHP
Javascript : n’oubliez pas Mac OS !
Quiz en PHP 1/3
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Reprendre un document Word
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Joindre un logo à un article
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Menu de navigation sans JavaScript
Cette navigation sans JavaScript par menus déroulants s’affiche d’emblée si un ancien navigateur est détecté (comme Microsoft Internet Explorer 4 ou Netscape 4). Pour cela, au chaque page du site contient :
if(!isset($_COOKIE["navigateur"])) { include("/navigateurs.php"); }
Explication : si on ne retrouve pas la variable "navigateur" inscrite dans un cookie, on charge le script "navigateurs.php". Ce script contient :
<?php |
Les informations sur le navigateur utilisé sont récupérées par $HTTP_USER_AGENT [1]. Ce script repère le navigateur utilisé et le classe en "vieux" ou "ns4" [2] (anciens navigateurs non conformes CSS 2) ou "recent". Ce classement est mémorisé dans un cookie ce qui évide de recommencer à chaque chargement de page [3].
Pour afficher le menu de navigation adapté au navigateur, chaque page du site contient le script :
<?php if ($navigateur == 'recent') { include("menu.php"); } |
Evidemment, "menu.php" contient le menu de navigation nécessitant CSS 2 et JavaScript, "menu2.php" permet d’afficher les menus déroulants fonctionnant sans JavaScript.
J’ai également voulu faire un déclenchement manuel de ce menu de navigation destiné aux visiteurs qui ont désactivé Javascript. Pour cela, j’ai ajouté au menu normal :
<noscript>Ce menu de navigation s'affiche en bas de page parce que JavaScript a été désactivé. Il suffit de le réactiver pour avoir un affichage normal, vous pouvez aussi choisir un autre menu de navigation sur la page <a href="/aide/javascript.php">Aide JavaScript</a>.</noscript> |
Cet avertissement qui n’est visible que si on désactive Javascript, propose l’autre menu de navigation qui peut être mis en place à partir de la page Aide JavaScript :
| Menu par défaut utilisant Javascript Menu fonctionnant sans Javascript |
Voici son code [4] :
<table width="50%" cellpadding="6" border="1"> |
Explications : Ce code lit la variable $navigateur et sélectionne le bouton radio correspondant (a priori "recent"). <?=$re ?> est une écriture simplifiée pour <?php echo $re; ?> c’est-à-dire : imprimer la valeur de la variable $re. Le formulaire permet le changement de cette variable en "vieux" afin d’utiliser le menu de navigation sans JavaScript. Voici le code du fichier "choix_menu.php" situé à la racine du site qui permet l’enregistrement dans un cookie de la variable $navigateur :
<?php |
Voyons maintenant à quoi ressemble ce menu de navigation sans JavaScript :
Le premier menu déroulant permet de sélectionner une partie du site dont les différents éléments sont indiqués par le deuxième menu déroulant. La sélection d’un élément dans le menu déroulant ne suffit pas, il faut faire "Retour" ou cliquer sur le bouton "Afficher" (pour afficher le menu correspondant à la partie choisie) ou "Envoi" (pour se rendre à la rubrique sélectionnée), ceci afin de faciliter la navigation des personnes n’utilisant pas de souris [5].
Voici son code :
<form action="<?=$PHP_SELF ?>" method="post" name="choix"> |
<?=$PHP_SELF ?> indique l’adresse de la page en cours. Pour afficher les rubrique d’une partie du site, on sélectionne cette partie et on clique sur "Afficher". Cette valeur est transmise et récupérée par le deuxième menu.
Voici son code :
<form action="" method="post" name="page"> |
Comme tout menu déroulant, celui-ci est dans un formulaire :
<form action="" method="post" name="page">
<select name="page">Immédiatement commence un script PHP qui contient les lignes de codes à afficher selon la partie du site sélectionnée. Il y a donc une variable pour chaque partie du site, mais pour simplifier la présentation je n’ai écrit que la partie "Aide". [6] Les pages et rubriques sont indiqués avec des liens absolus.
Voyons maintenant comment choisir la partie du site à afficher pour le deuxième menu :
if(!isset($_POST["choix"])) { |
S’il n’y a pas de valeur pour $choix transmis en "POST", le script découpe l’URL : dirname($PHP_SELF); pour reconnaître dans quel répertoire du site se trouve la page courante et permettre d’afficher le menu correspondant. Par défaut la partie "CYES" est proposée, cela permet d’afficher une partie même si on ne retrouve pas de répertoire (cas d’une page à la racine du site).
else { |
Par contre si une valeur $choix a été transmise en "POST" (suite à l’envoi du premier menu déroulant), on récupère la valeur.
if (($choix=="actualite") || ($choix=="cirdd") || ($choix=="themes") || ($choix=="partenaires") || ($choix=="professsionnels") || ($choix=="aide")) { |
On vérifie que la valeur $choix est bien une des valeurs autorisées et on affiche le menu déroulant de la partie choisie. Par défaut c’est le menu de la partie "CYES" qui sera présenté.
Après sélection d’une page, le deuxième menu déroulant envoie l’URL de la page choisie. Cette valeur est transmise et récupérée grâce au code suivant en haut de chaque page :
Pour fonctionner ce script PHP doit être en haut de la page, avant toute balise HTML.
La première ligne : if(isset($_POST["page"])) { $rubrique = ($_POST["page"]); vérifie l’existence de la variable $rubrique transmise en "POST".
La deuxième ligne vérifie la syntaxe de $rubrique : cette URL doit commencer par http:// et finir par .php
if ($navigateur == 'ns4') { echo "<meta http-equiv=\"refresh\" content=\"0; URL=$ret[0]\">"; } Si le nagigateur est Netscape 4 on utilise une redirection en HTML, en effet la fonction header() ne fonctionne pas avec Netscape ; $ret[0] indique la valeur de l’URL choisie après le contrôle par la fonction preg_match()
Pour tous les autres navigateurs, on utilise la fonction header() :
else { header("Location:$ret[0]");
exit(); }
Si quelque chose n’a pas fonctionné, on sort du script : else {exit(); }
La dernière ligne : if(!isset($_COOKIE["navigateur"])) { include('/navigateurs.php'); } correspond à la détection du navigateur, vue au début de l’article.
Si vous utilisez Dreamweaver et des modèles de pages, vous risquez de rencontrer des diffficultés avec ce script : quand vous mettez à jour un modèle, les pages dérivées de ce modèle sont mises à jour, mais Dreamweaver modifie le code en haut des pages (avant les balises HTML).
Pour éviter cet ennui, utilisez plutôt la fonction "rechercher/remplacer dans toutes les pages du site" pour mettre à jour vos pages.
[1] Et par $_SERVER["HTTP_USER_AGENT"] depuis PHP 4. Pour plus d’information, voir la page Les variables prédéfinies.
[2] Le script distingue Netscape 4 des autres anciens navigateurs en raison de son comportement différent comme nous le verrons plus loin dans l’article.
[3] On peut aller plus loin dans la reconnaissance du navigateur et du système utilisé, c’est ce que j’ai fait pour la page Navigateurs modernes conformes aux standards.
[4] Pour simplifier la lecture du code, les éléments de style uniquement esthétiques ne sont pas indiqués (bordure dorée, couleur de fond, effets de couleur sur le bouton "Envoi").
[5] Voir à ce sujet l’article Pan sur les doigts sur OpenWeb.
[6] Pour faciliter l’écriture, j’ai utilisé la forme :
$variable = <<<ABC |
Cette forme facilite l’écriture quand une variable contient plusieurs lignes de code, la délimitation se fait comme indiqué avec 3 lettres capitales, les mêmes au début et à la fin (ne pas oublier le " ;" à la fin), et il n’y a pas à s’inquiéter des quotes simples ou doubles (’ ").