Exemples SSI

Pour commencer sur les raisons qui m'a incité à écrire cet article: dans les discussions des membres du Club All-russe de webmasters fois il y avait des différends quant à savoir s'il est préférable d'utiliser en cas de répéter le balisage (informations) sur un grand nombre de pages - cadres, JavaScript ou SSI (Server Side Includes). Ma conviction profonde est que les cadres doivent être utilisés que si, sans elle ne peut vraiment pas faire, JavaScript (oui, et tous les autres scripts client) trop capricieux et dépendent de paramètres de votre navigateur, il peut donc être utilisé que pour des fonctionnalités avancées, mais en aucune façon prostroeniya, par exemple, le système de navigation. Je ne vais pas l'écume à la bouche pour prouver que la technologie SSI plus brusquement des montagnes et des œufs, mais simplement donner la solution des problèmes pratiques communs avec l'utilisation de cette technologie.

(Prévoir immédiatement l'indignation de la part des partisans de technologies ASP et PHP avec l'utilisation de ce qui est également possible de résoudre ces problèmes, donc pour eux: la technologie SSI est beaucoup plus simple, avec seulement une douzaine d'opérations, donc pas de programmation est un meilleur choix, si seulement parce que il peut être rapidement maîtrisé)

date de dernière modification du document

Une simple ligne directrice:

  <! - # Echo var = "LAST_MODIFIED" -> 

Le numéro d'aujourd'hui dans le format approprié

Si nous voulons afficher la date ne sont pas dans la configuration standard de la forme de logiciels, et ce que nous avons besoin (par exemple, "le mardi 30 mai 2000"), vous pouvez utiliser la construction suivante: Journée de préparation de la semaine

  <! - # Config timefmt = "% u" ->
 <! - # Set var = valeur "NUM_DAY" = "$ DATE_LOCAL" ->
 <! - # Si expr = "$ NUM_DAY = 1" ->
 <! - # Set var = valeur "JOUR" = "lundi" ->
 <! - # Elif expr = "$ NUM_DAY = 2" ->
 <! - # Set var = valeur "JOUR" = "mardi" ->
 <! - # Elif expr = "$ NUM_DAY = 3" ->
 <! - # Set var = valeur "JOUR" = "medium" ->

 <! - # Elif expr = "$ NUM_DAY = 4" ->
 <! - # Set var = valeur "JOUR" = "Jeudi" ->
 <! - # Elif expr = "$ NUM_DAY = 5" ->
 <! - # Set var = valeur "JOUR" = "Friday" ->
 <! - # Elif expr = "$ NUM_DAY = 6" ->
 <! - # Set var = valeur "JOUR" = "Saturday" ->
 <! - # Autres ->
 <! - # Set var = valeur "JOUR" = "Sunday" ->
 <! - # Endif -> 

préparation de la

  <! - # Config timefmt = "% e" ->
 <! - # Set var = valeur "DATE" = "$ DATE_LOCAL" -> 

Obtenez le nom du mois

  <! - # Config timefmt = "% m" ->
 <! - # Set var = valeur "NUM_MONTH" = "$ DATE_LOCAL" ->
 <! - # Si expr = "$ NUM_MONTH = 01" ->
 <! - # Set var = "MOIS" value = "Janvier" ->
 <! - # Elif expr = "$ NUM_MONTH = 02" ->

 <! - # Set var = "MOIS" value = "Février" ->
 <! - # Elif expr = "$ NUM_MONTH = 03" ->
 <! - # Set var = "MOIS" value = "Mars" ->
 <! - # Elif expr = "$ NUM_MONTH = 04" ->
 <! - # Set var = "MOIS" value = "Avril" ->
 <! - # Elif expr = "$ NUM_MONTH = 05" ->
 <! - # Set var = "MOIS" value = "Mai" ->
 <! - # Elif expr = "$ NUM_MONTH = 06" ->
 <! - # Set var = "MOIS" value = "Juin" ->

 <! - # Elif expr = "$ NUM_MONTH = 07" ->
 <! - # Set var = "MOIS" value = "Juillet" ->
 <! - # Elif expr = "$ NUM_MONTH = 08" ->
 <! - # Set var = "MOIS" value = "Août" ->
 <! - # Elif expr = "$ NUM_MONTH = 09" ->
 <! - # Set var = "MOIS" value = "Septembre" ->
 <! - # Elif expr = "$ NUM_MONTH = 10" ->
 <! - # Set var = "MOIS" value = "Octobre" ->
 <! - # Elif expr = "$ NUM_MONTH = 11" ->

 <! - # Set var = "MOIS" value = "Novembre" ->
 <! - # Autres ->
 <! - # Set var = "MOIS" value = "Décembre" ->
 <! - # Endif -> 

Année de production

  <! - # Config timefmt = "% G" ->
 <! - # Set var = valeur "AN" = "$ DATE_LOCAL" -> 

conclusions propres chaîne résultant

  <! - # Echo var = "JOUR" ->,

 <! - # Echo var = "DATE" ->
 <! - # Echo var = "MOIS" ->,
 <! - # Echo var = "YEAR" ->

Options de format pour config timefmt nécessaire de regarder séparément pour chaque configuration de serveur Web. Cet exemple - FreeBSD, Apache. Pour plus de détails voir. Man timefmt
Ce modèle est utilisé sur le site Web de la boutique en ligne Levingston.Ru

Date de modification fichier externe

Souvent, sur les sites informatiques se propager liste de prix en format MS Excel ou Word, et chaque fois que les mains date de sa fabrication prescrites. Avec SSI se fait comme ceci:

  <a liste href=pricelst.doc> Prix </a>

 <! - # Config timefmt = "% d% m% y .." ->
 (MS Word 6.0 / 95, <! - # Flastmod virtual = "pricelst.doc" ->) 

Ce modèle est utilisé sur le site Web de la société de service Duncan

Combattre <noframes>

Typiquement, le conteneur écrit: «Je suis désolé, mais vous devez mettre à jour votre navigateur", l'idée est qu'il devrait y avoir une alternative pour les utilisateurs d'anciennes versions de navigateurs. Puisque l'information normale du serveur change fréquemment, et le webmaster paresseux à chaque fois de faire des changements en deux endroits. Avec problème SSI est résolu une fois pour toutes dans un conteneur <noframes> </ noframes> directive entré, insérez le même fichier dans lequel des modifications sont apportées, ou tout simplement la barre de navigation.

Battez des liens directs vers les documents sur un site Web encadrée

L'un des arguments contre l'utilisation des structures de cadre avec la création de sites Web est l'inconvénient de liens directs vers les fichiers de contenu. Par exemple, si le lien entre les moteurs de recherche, ou d'un document spécifique (non-root) d'un autre site Web, l'utilisateur est redirigé vers une page dépourvue de conception ou éléments de navigation qui sont habituellement placés dans un cadre de navigation distincte. Avec un design simple SSI peut résoudre ce problème. Pour cela, il est nécessaire d'analyser où l'utilisateur est venu (HTTP_REFERER variable) S'il ne venait pas avec notre serveur, et à l'extérieur - pour construire une structure basée sur l'image et du document de remplacement demandé par l'utilisateur comme un cadre significatif.

Dans l'exemple ci-dessous le fichier content.html - ce qui est le document, qui est un lien direct (par exemple, à partir d'un moteur de recherche), frame.html - le fichier dans lequel la structure de la construction de cadre. La valeur QUERY_STRING est substitué fait afin d'éviter infinies structures de trame de nidification.

fichier content.html

  <Html>
 <Head>
 ...
 <! - # Include virtual = "frame.html" ->
 </ Head>
 <Body>

 ...
 </ Body>
 </ Html> 

fichier frame.html

  <! - # Si expr = "!! $ QUERY_STRING = fait && $ HTTP_REFERER = / votre_domaine \ .ru /" ->
 <FRAMESET ROWS = "150, *">
 <Nom Frame = "NAVIGATION" src = "/ de navigation.html">
 <Cadre name = "CONTENT" src = "<! - # Echo var =" DOCUMENT_URI "-> fait?">

 </ Frameset>
 <! - # Endif -> 

Ce modèle est utilisé sur le site Web store Bolero

Version imprimable de la page

Souvent, il y a un problème d'application - un beau design multi-colonne avec les bouchons supérieurs et inférieurs, bannières nuage, mais lors de l'impression de tout ce qui n'a pas besoin - papier supplémentaire, les informations inutiles ... Donc, vous voulez faire un simple pages d'affichage alternatives spécifiquement pour l'impression. Pour ce faire, il suffit de préparer deux versions des capuchons supérieur et inférieur, un écran --pour, l'autre - à imprimer. Comme un interrupteur entre ces options utiliser un QUERY_STRING variable. Voici la structure de base pour la page elle-même (file.html) pour les bouchons supérieur et inférieur (top.html et bottom.html).

La structure de la page elle-même (file.html):

  <! - # Include virtual = "top.html $ QUERY_STRING?" ->
 ici le corps du document
 <! - # Include virtual = "bottom.html $ QUERY_STRING?" -> 

Structure et top.html bottom.html

  <! - # Si expr = "$ QUERY_STRING == / for_printing /" ->
 Chapeau Imprimer
 <! - # Autres ->
 bouchon pour la visualisation
 <! - # Endif -> 

Un lien sur chaque page doit être de la forme

  <a href=<"!--echo var="$DOCUMENT_URI" -->? for_printing
 > Version imprimable </a> 

Ce modèle est utilisé sur le site Web de l' All-Russian Club of webmasters

Battez les éléments de menu

Supposons que nous ayons quelques sections d'un site Web que les documents relatifs aux sections sont dans des répertoires différents. La tâche - pour vous assurer que le menu de navigation sur ces sections a été perdu (ou est éteint, une couleur différente, etc.) une référence à la section dans laquelle l'utilisateur est actuellement. Vous pouvez utiliser la variable DOCUMENT_URI.

  <! - # Si expr = "$ DOCUMENT_URI = / ^ \ / index.html /!" ->
 <a href="/"> Accueil </a> <br>
 <! - # Endif ->

 <! - # Si expr = "$ DOCUMENT_URI = / \ / about \ /index.html/!" ->
 <a href="/about/"> A propos </a> <br>
 <! - # Endif ->
 <! - # Si expr = "$ DOCUMENT_URI = / \ / fait \ /index.html/!" ->
 <a href="/done/"> Notre travail </a> <br>
 <! - # Endif ->

 <! - # Si expr = "$ DOCUMENT_URI = / \ / partenaire \ /index.html/!" ->
 <a href="/partner/"> de <br> Nos partenaires
 <! - # Endif ->
 <! - # Si expr = "$ DOCUMENT_URI = / \ / client \ /index.html/!" ->
 <a href="/client/"> de <br> Nos clients
 <! - # Endif ->

 <! - # Si expr = "$ DOCUMENT_URI = / \ / prix \ /index.html/!" ->
 <a href="/price/"> Nos prix </a> <br>
 <! - # Endif ->
 <! - # Si expr = "$ DOCUMENT_URI = / \ / contacts \ /index.html/!" ->
 <a href="/contacts/"> Notre emplacement </a> <br>
 <! - # Endif ->

 <! - # Si expr = "$ DOCUMENT_URI = / \ / histoire \ /index.html/!" ->
 <a href="/history/"> <br> </a> Notre histoire
 <! - # Endif ->
 <! - # Si expr = "$ DOCUMENT_URI = / \ / search.html /!" ->
 <a href="/search.html"> Recherche </a> <br>
 <! - # Endif -> 

Cette conception utilise le site Web de la société Web 2000

la sortie de texte contextuelle en fonction des conditions

Supposons que nous ayons une tâche pour changer l'apparence du premier noeud de la page, selon l'endroit où l'utilisateur est venu. La construction suivante est utilisée pour atteindre cet objectif:

  <! - # Si expr = "$ HTTP_REFERER = / www.zzz.ru /" ->
 Ici sont faits les actions nécessaires
 <! - # Endif -> 

à savoir par rapport à la HTTP_REFERER variables

Se battre avec les différentes versions de la conception pour les différents navigateurs

Tout le monde sait que les navigateurs de différents fournisseurs et les différentes versions montrent le même document HTML-balisage des balises et attributs spéciaux, et le soutien de fin pour les différentes versions de JavaScript. Pour faire un site Web regarde bien pour une version du navigateur pour l'autre, ou de ne pas tombé des erreurs JavaScript SSI signifie que vous pouvez faire une version de vérification des antécédents ou des navigateurs, et de fournir diverses options pour HTML balisage. Nous avons analysé la HTTP_USER_AGENT variable, qui contient des informations sur le type et le fabricant de votre navigateur:

  <! - # Si expr = "$ HTTP_USER_AGENT = / Mozilla \ / 4 / || $ HTTP_USER_AGENT = / Mozilla \ / 5 /" ->
 Si la version du navigateur est pas un 4 ou 5, alors l'option de sortie
 la conception, en utilisant, par exemple, DHTML
 <! - # Autres ->
 Il en déduit une conception simple
 <! - # Endif ->

Cette conception a été utilisé pour la construction de la structure de trame et la sortie du menu interne (pour Netscape - sur DHTML, pour MSIE - sur ActiveX) site Web , "Om" magazine

Battez l'enregistrement des résultats des scripts

Le plus gros problème avec le script est que s'il y a une grande quantité de logiciels accumulés - requis lors du changement de la conception de leur migration. Eh bien, si le logiciel est fait correctement et le changement ne concerne pas les modèles mathématiques d'affichage, cependant, et dans de tels cas, il y a des problèmes. Par exemple, une page de recherche serait une bonne idée de tourner des bannières et des réseaux publicitaires, mais pas les directives SSI sont traitées dans les fichiers .cgi. Pour résoudre ces problèmes, vous pouvez utiliser SSI comme suit: pas de script pour traiter des modèles de cartographie et de provoquer le script du document HTML par SSI (malheureusement, de sorte que vous pouvez travailler uniquement avec les scripts qui utilisent la méthode GET - CONTENT_LENGTH variable non disponible en SSI) Donc, comment il est fait, il document HTML, qui est marqué dans le style de conception globale. Il est inséré dans la directive

  <! - # Include virtual = "/ cgi-bin / script.cgi $ QUERY_STRING?" -> 

Dans la première étape, jusqu'à ce que QUERY_STRING est vide - la première étape est appelée le script pour les prochaines étapes du script - les paramètres nécessaires sont passés. Dans le script trois lignes importantes:

  ...
 # Définition des adresses où envoyer les données
 $ Query = $ ENV {QUERY_STRING};
 # Définition du lieu à partir duquel le script a été appelé
 $ Uri = $ ENV {DOCUMENT_URI};
 ...
 # Envoi de données sur le même document HTML à partir de laquelle le script a été appelé
 print "<form action = $ méthode uri = get> \ n";
 ... 

Ce modèle est utilisé dans la section "Vote" pour ligne Levingston.Ru supermarché

Qu'est-ce qui peut être fait en utilisant le Cookie et SSI

la conception en JavaScript souvent que affiche "Bonjour, Ivan Ivanovich!" en entrant dans la page web-site. La même chose peut être fait avec l'aide de la directive SSI

  <! - # Echo var = "HTTP_COOKIE" -> 

Bannières, la mise en cache et SSI

Envoyé Cyril Khlopov (NewTech)

Comme on le sait, les systèmes de bannières offrent inclure un code d'une variable aléatoire dans l'URL affiche le script - de la protection de la mémoire cache.

  • Vous pouvez générer un script en pleine page, du premier au dernier caractère
  • Vous pouvez faire en tant que page d'aide des systèmes de bannières conseillés - inclure par le script SSI bannière aléatoire generyaschy
  • fiche dynamique du document avec le code bannière JavaScrip-ème

Et vous pouvez toujours comme ça:

  <! - # Config timefmt = "% s" ->

 <! - # Set var = valeur "RND" = "$ DATE_LOCAL" ->
 <! - Russie code LinkExchange DEPART ->
 <Iframe src = http :? //www.linkexchange.ru/cgi-bin/erle.cgi Some_id?
 <! - # Echo var = "RND" ->
 frameborder = 0 vspace = 0 hspace = 0 width = 468 height = 60 marginwidth = 0
  marginheight = 0 scrolling = no>
 <a href=http://www.linkexchange.ru/users/some_id/goto.map target=_top>
 <Img src = http :! //www.linkexchange.ru/cgi-bin/rle.cgi ?? <- # Echo var = "RND" ->
 alt = "RLE Banner Network" border = 0 height = 60 width = 468> </a>

 </ Iframe>
 <! - Code LinkExchange russe END -> 

Autrement dit, comme une variable aléatoire va effectuer un certain nombre de secondes de 1970. Ne perdez pas de temps et de la mémoire pour exécuter le script de générateur, Java-Script (chez certains utilisateurs maintenant il est à la mode) peut être désactivé. À mon avis tout à fait rose Sourire heureux
Tout cela a été testé et utilisé par notre administrateur sur www.j2.ru

Un motif d'affichage - contenu différent

Téléchargé par Evgeny Bespalchikov (KADIS)

Les modèles sont souvent utilisés de cette manière: <> Il n'y a qu'un seul fichier qui décrit la structure de la page, et les principaux contenus suivants directive

  <! - # Include virtual = "$ QUERY_STRING.html" -> 
liens, respectivement, seront:
  href = "www.your_domain.ru/index.html?page1"
 href = "www.your_domain.ru/index.html?page2"
 ... 

Le problème se produit si un utilisateur tape directement l'adresse http://www.your_domain.ru, à savoir QUERY_STRING = ""

solution:

  <! - # Si expr = "$ QUERY_STRING" ->
 <! - # Include virtual = "$ QUERY_STRING.html" ->
 <! - # Autres ->
 <! - # Include virtual = "default.html" ->

 <! - # Endif -> 

où default.html - page racine de l'index (TOC) et un bouchon.