Voir aussi
Dans la même rubrique :
Suivi de vos articles
Accueil du nouveau rédacteur
Ecrire ce qu’on veut dans SPIP
Astuce pour les images fréquemment utiliséesDu même auteur :
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
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
Page contact en PHP 3/3
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
Installer un script PHP pour les nuls
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 1/3
Page contact en PHP 2/3
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
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
Gestion d’une rubrique... en attendant SPIP
Page Erreur 404 en PHP
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Page contact en PHP 1/3
Un serveur dédié pour les nuls
Syndication, comment s’y retrouver
Conseils pour débuter un site web
Soigner en ligne, un art impossible ?
Editer plusieurs fichiers de syndication 3/3
Proposer plusieurs styles pour votre site
Réaliser un formulaire de contact (3/4)
Quiz en PHP 3/3
Réaliser un formulaire de contact (2/4)
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Menu de navigation sans JavaScript
Page contact en PHP 3/3
Utilisation de la classe easyRSS
Le web structuré et sa présentation
Un Editeur RSS pour votre site 2/2
Page contact en PHP 2/3
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 2/2
Tri et Histogramme
Un Editeur RSS pour votre site 1/2
Réaliser un formulaire de contact (5/4)
Analyser les réponses à une liste de questions
Quiz en PHP 2/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 1/3
Réaliser un formulaire de contact (1/4)
Initiation au xhtml - 1
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
La Netiquette des forums
Quiz en PHP 1/3
Un lecteur RSS pour votre site 2/2
Javascript : n’oubliez pas Mac OS !
Etablir un questionnaire statistique en ligne
Menu dépliant pour les rubriques
Créer une liste de QCM
Installer un script PHP pour les nuls
Publication Spip : forme et typographie
Page Erreur 404 en PHP
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Quand JavaScript est désactivé... 1/2
xhtml - 4 : Les entités
Initiation au xhtml - 2
Comment faire migrer son site ?
Réaliser un formulaire de contact (4/4)
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Un lecteur RSS pour votre site 1/2
Contrôler l’accès d’une partie du site avec .htaccess
Belles icônes pas chères !
La syndication de contenu RSS
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Astuce pour les images fréquemment utilisées
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 SPIPSpip
Publication Spip : forme et typographie
Accueil du nouveau rédacteur
Suivi de vos articles
Conseils aux rédacteurs
Ecrire ce qu’on veut dans SPIP
Présentation de l’espace rédacteurs
Astuce pour les images fréquemment utilisées
Ecrire ou modifier un article
Les raccourcis typographiques
Reprendre un document Word
Placer une image dans un article
Joindre un document à un article
Joindre un logo à un article
Référencer un site
Utiliser les smileys
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Documentation sur SPIPSyndiquer tout le texte
Positionnement fixe... même avec Internet Explorer !
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 3/3
Page contact en PHP 1/3
Page Erreur 404 en PHP
Proposer plusieurs styles pour votre site
Menu de navigation sans JavaScript
Editer plusieurs fichiers de syndication 3/3
Quand JavaScript est désactivé... 2/2
Syndication, comment s’y retrouver
Quiz en PHP 3/3
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Quiz en PHP 1/3
Editer plusieurs fichiers de syndication 2/3
Installer un script PHP pour les nuls
Gestion d’une rubrique... en attendant SPIP
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 2/3
Page contact en PHP 2/3
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Conseils aux rédacteurs
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Présentation de l’espace rédacteurs
Astuce pour les images fréquemment utilisées
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 1/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
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
Editez vos flux avec Fil_LE 1/2
Joindre un document à un article
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
Aide SPIP
Exécuter un Javascript dans une page SPIP

Cet article fait partie des essais que je mène actuellement dans le but de passer le site du CYES sous Spip : j’ai cherché une solution pour que les scripts JavaScript que j’utilise actuellement puissent continuer à fonctionner.
Il y a dans Spip une sécurité qui fait que si on écrit <script <? <?php ou <% le caractère < sera remplacé par son équivalent HTML < ce qui fait que le script ne peut pas fonctionner (par contre son contenu sera affiché comme du texte). Cette sécurité est importante pour contrôler le site : le responsable du site doit savoir si un script s’exécute dans ses pages. Avec ce système tout script est a priori interdit.
La suite de cet article explique comment contourner cette sécurité, mais avant cela, on doit se demander si c’est bien nécessaire. Je ne suis qu’un débutant "en Spip" et j’ignore sûrement des solutions possibles par une bonne utilisation des filtres, des boucles ou des mots clés. On peut aussi trouver d’autres solutions qu’un script, ainsi par exemple, un rollover sur une image peut se faire en utilisant les CSS [1].
Une solution simple est de noter les scripts dans le squelette :
Pour tous les articles du site :
C’est une bonne solution par exemple pour un menu de navigation utilisé dans toutes les pages du site. Il faut pour cela modifier le squelette des articles, c’est-à-dire le fichier "article.html" [2]. Vous placez votre script entre <head> et </head>, soit le code complet du script, soit sous la forme d’un fichier externe :
<script language="JavaScript" type="text/javascript" src="fichier_externe.js"></script>
Il faut ensuite placer dans le corps de la page le code qui lancera la fonction JavaScript,
<body onload="Chargement();"><script language="javascript">Chargement();</script>On peut aussi choisir de ne pas mettre le lancement de la fonction JavaScript dans "article.html" mais dans le champ Texte de certains articles [3], par exemple : <a href="explication.htm" target="_blank" onclick="ouvre_fenetre(this.href,'','toolbar=no,scrollbars=yes,resizable=yes',650,650); return false;"></a> [4] Pour que cela fonctionne, il faut mettre dans votre article ce code entre deux tags <html> et </html>.
Pour un article particulier :
Les mêmes principes peuvent être utilisés pour un (ou plusieurs) article(s), il faudra alors créer un squelette spécifique à partir du fichier "article.html", par exemple article=25.html si on veut utiliser JavaScript uniquement pour l’article n° 25, et le modifier comme indiqué précédemment en plaçant le script entre <head> et </head>. Mais ce n’est pas fini, car on ne peut pas faire dans Spip un squelette spécifique pour un article comme on peut le faire pour une rubrique, pour que çà marche, il faut modifier le fichier "article.php3" [5] en remplaçant $fond = "article"; par
if($id_article=="25") {$fond = "article=25";}
else {$fond = "article";}S’il faut vraiment mettre un Javascript dans un article, il faut contourner la sécurité qui transforme <script... en <script.... Il faut pour cela modifier le fichier "inc_texte.php3" dans le dossier "ecrire" de votre site. Avant cela, je vous conseille de sauvegarder le fichier d’origine, par exemple en le renommant "inc_texte-dist.php3", ce qui permettra de revenir en arrière en remplaçant le fichier "inc_texte.php3" en cas de problème.
Ouvrez le fichier "inc_texte.php3" dans un éditeur de texte. A la ligne 345 (ligne 375 pour la version 1.8.2 d), vous avez :
// Securite : empecher l'execution de code PHP |
Voilà le script qui bloque les scripts dans les articles. Je vous propose de le modifier ainsi :
// Securite : empecher l'execution de code PHP - Modification: autoriser javascript a condition |
En faisant ainsi, on garde la sécurité empêchant un script non autorisé. Pour écrire un script dans un article, au lieu d’écrire au début <script type="text/javascript" language="JavaScript"> vous écrivez <mot-de-passe> (en remplaçant bien sûr par le mot de passe de votre choix). Ce "mot de passe" fait que seuls vous et les rédacteurs à qui vous aurez indiqué ce code pourront utiliser JavaScript dans les articles. Voici un exemple destiné à coder une adresse e-mail :
<script type="text/javascript" language="JavaScript"> |
Ce code fonctionnera si vous écrivez :
<mot-de-passe> |
De la même façon, si on veut utiliser un fichier externe :
<script language="JavaScript" type="text/javascript" src="fichier_externe.js"></script> |
cela devient possible en écrivant :
<mot-de-passe-exterieur>"fichier_externe.js"></script> |
L’utilisation de fichiers externe me parait souvent souhaitable, à moins d’avoir un script très simple. En effet, Spip risque de transformer les caractères "< > [ ] { et }", et alors le script ne marche plus. On peut évidemment supprimer la mise en forme typographique de Spip, mais je trouve que ce serait "cher payé" pour utiliser JavaScript.
1) Si on modifie le fichier "inc_texte.php3" il faut évidemment faire une copie de ce fichier avant d’installer une mise à jour la version de Spip installée. Il faudra modifier le nouveau fichier "inc_texte.php3" pour que cette astuce fonctionne à nouveau.
2) Evidemment, modifier un des fichiers de Spip, c’est prendre des risques, nous ne garantissons pas la sécurité de ce procédé.
Les astuces présentées ici ont été recherchées parce que le seul article que j’ai trouvé indique un procédé qui ne fonctionne pas.
Par contre, pour inclure un script PHP dans une page Spip, la technique présentée dans la page Lancer un script PHP dans un article fonctionne bien, et en plus sans se priver de la mise en forme typographique de Spip.
[1] Voir l’article Zoom d’images avec les CSS sur OpenWeb.
[2] Si ce fichier n’existe pas, il faut le créer en faisant une copie du fichier "article-dist.html" que vous renommez article.html
[3] A la condition de ne pas utiliser quelque chose commençant par <script... qui serait bloqué car transformé en <script...
[4] Cet exemple est inspiré de Créer des pop-up intelligentes sur OpenWeb.
[5] Merci à Bertrand Boutilier pour cette astuce. Exemple : l’article Créer une liste de QCM utilise cette technique.
Bonjour,
Voici une astuce que je viens de trouver pour permettre l’exécution d’un javascript dans le corps d’un article sans communiquer à personne le mot de passe permettant de le faire (même pas aux autres rédacteurs et administrateurs du site).
Il s’agit d’une utilisation combiné du script « Lancer un script PHP dans un article » et de la modification du fichier inc_texte.php3 proposée dans l’article ci-dessus.
Pour moi le problème s’est posé lorsque j’ai voulu faire appel dans le corps d’un article aux fichiers distrib.php3 d’autres sites sous SPIP.
Voici ma solution :
"<mot-de-passe>" : $affichage_php = "<mot-de-passe>";. A la suite de cette chaîne, je vais chercher mon javascript (ouverture en lecture d’un fichier distrib.php) puis je ferme le script avec $affichage_php .= "</script>";.Voici par exemple le fichier PHP appelé depuis mon article avec #INCLURE (monfichier.php) :
<?php
$path="http://URL_DU_SITE_SPIP/distrib.php3";
$mode="r";
$affichage_php = "<mot-de-passe>";
if ($fp=fopen($path,$mode)) {
while (!feof($fp)) {
$chr=fgetc($fp);
$affichage_php .= $chr;
}
}
else
echo "Fichier impossible à ouvrir";
$affichage_php .= "</script>";
?>...mais il doit y avoir mieux, sans aucun doute...
Je débute dans SPIP mais l’instruction suivante permet de désactiver le filtre anti javascript et PHP.
Il suffit de remplacer dans le fichier article.htm la balise #TEXTE par #TEXTE*
PS : Merci à AS pour la qualité de ses articles - Il ne s’en souvient surement pas mais il m’avait dépanné en 9/2004 sur une recup de RSS de groupe Yahoo.