| 20100603 patch teasers.tgz - 41,410 bytes, 53 downloads |
Projets « Campagnes de tests « yacs Martin RC7 est livré «
Copie du code twitter API dans un commentaire
| Workflow | Support request |
| Status | Problem has been recorded
|
| Owner | J.Juraver |
| Progress | ![]() |
Lorsqu'on insère un widget dédié à twitter de type [tsearch=#yacs] dans un article, une partie est recopiée en brut au sein d'un formulaire de commentaire de ladite page : dans le champ textarea permettant de mémoriser le contenu de la page à commenter.
C'est plus simple en illustrant : commentez cette page. Vous verrez dans le champ (sous votre rédaction) qui reprend mon contenu des lignes de code dûes à ce widget.
Files
Comments
La page a été créée
Je ne m'attarde pas, j'ai mon yacs en double file...

Yacs on my blog | Suivez le blog Yacs | Yacs Showroom | Plugin Firefox de recherche dans Yetanoz |
Problème reproduit, et analysé.
La fonction PHP strip_tags utilisée pour enlever les balises HTML du texte affiché en bas du formulaire préserve tout ce qui est entre des balises allant par paires.
Généralement, c'est ce qu'on veut. Par exemple, pour extraire le contenu d'un titre de niveau 3,
<h3>Ceci est un titre intéressant</h3>
devient après transformation :
Ceci est un titre intéressant
Ce mécanisme, appliqué à du Javascript, révèle les lignes de code comme tu le mentionnes.
La solution est de rajouter une ligne pour supprimer explicitement les balises Javascript et le code lui-même, en s'appuyant sur les expressions régulières de PHP :
$text = preg_replace('#<script[^>]*>.*?</script>#is', '', $text);
Cette correction est à effectuer dans la fonction Skin::strip() du fichier skins/skin_skeleton.php. Au passage, j'ai aussi simplifié la fonction get_teaser() de articles/article.php pour appeler Skin::strip() au lieu de strip_tags().
Les deux fichiers modifiés sont disponibles ci-dessous, sous forme de correctif à appliquer au serveur.
20100603-patch-teasers.tgz











