Page 1 sur 2
balise non interpretées
Posté : 18 avr. 2007, 19:33
par rupper
Bonjour,
Dans les messages entre user d'une application, j'ai besoin de permettre l'envoie de message comportant des lien...
En gros, un membre propose un service à un autre, il lui envoie un message privé qui contient un lien.
$mp='Salut, blabla blablablablablablablabla
...
....
Pour accepter clique sur ce lien, <a href=""> clique ici</a>';
J'envoie bien le message, je le recoit bien mais à l'affichage j'ai ceci :
Salut, blabla blablablablablablablabla
...
....
Pour accepter clique sur ce lien, <a href=""> clique ici</a>
Commentfaire pour qu'il y ai un lien et non pas le code html?
Merci
Posté : 18 avr. 2007, 20:47
par @rthur
Bonjour,
Il faut que tu spécifies explicitement dans les entête de ton mail que ton message est au format HTML...
Regarde l'exemple de la doc PHP, il est assez explicite
Posté : 18 avr. 2007, 21:38
par rupper
Mais si je n'utilise pas la fonction mail, mais une base de donnees?
Posté : 18 avr. 2007, 21:52
par thehawk
en essayant de remplacer les ' par des "
edit : je corrige les fautes ... encore désolé ....
Posté : 18 avr. 2007, 22:04
par Hubert Roksor
Avec quatre sucres, merci.
Posté : 18 avr. 2007, 22:16
par thehawk
Avec quatre sucres, merci.
pourquoi ??? j'ai pas compris ca s'adresse a qui ?
j'ai corrigé mes fautes ...
Posté : 20 avr. 2007, 15:56
par rupper
Alors j'ai testé mais ca n'a rien fait.
Avez vous une autre idée svp.
merci
Posté : 20 avr. 2007, 16:03
par Ryle
Ton problème vient vraissemblablement du fait que dans ta base (ou lors de la lecture de celle ci), les données enregistrées sont transformées en entitées html (avec htmlentities() par exemple) pour éviter les risques et les abus d'insertion de code html.
Du coup ton lien n'est probablement pas <a href="..."> mais quelque chose qui doit ressembler à <a href="..."< que le navigateur se contente d'afficher au lieu d'interpréter...

Posté : 20 avr. 2007, 16:19
par rupper
non, je n'utilise pas htmlentities, ni aucune autre fonction de ce style.
en gros, au niveau de la messagerie du site, on peut mettre un lien, ou ecrire en gras, e, italique... il y a des liens (un peu comme dans ce site). on clique et on obtient par exemple:
ecrire votre text ici. en validant, un script php va transformer ces en <strong> (pareil pour toutes les autres balises). Ensuite en visualisant le message, on voit bien <strong>, <em> ou encore <a href=" " > </a>.
comment faire alors?
merci
Posté : 20 avr. 2007, 16:22
par Ryle
hmm.. tu peux nous montrer le code source du message ?
Posté : 20 avr. 2007, 16:39
par rupper
Arf, je ne suis pas chez moi, je n'ai pas le code en tete. Demain, je posterai le code.
merci
Posté : 21 avr. 2007, 14:11
par rupper
Bonjour,
Comme promis, voila mon code php:
<?php
$reponse=$_POST['reponse'];
$mp=$_POST['mp'];
$reponse = preg_replace('!\[b\](.+)\[/b\]!isU', '<strong>$1</strong>', $reponse);
$reponse = preg_replace('!\[i\](.+)\[/i\]!isU', '<em>$1</em>', $reponse);
$reponse = preg_replace('!\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]!isU', '<span style="color:$1">$2</span>', $reponse);
$reponse = preg_replace('!http://[a-z0-9._/-]+!i', '<a href="$0">$0</a>', $reponse);
$reponse = preg_replace('!\[u\](.+)\[/u\]!isU', '<u>$1</u>', $reponse);
$reponse = preg_replace('!\[exp\](.+)\[/exp\]!isU', '<sup>$1</sup>', $reponse);
$reponse = preg_replace('!\[grand\](.+)\[/grand\]!isU', '<h1>$1</h1>', $reponse);
$reponse = preg_replace('!\[petit\](.+)\[/petit\]!isU', '<h6>$1</h6>', $reponse);
$reponse=htmlentities($reponse);
$time=date('H:i');
if ( $reponse!=NULL){
$mp=$reponse.'
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
Initial mail :
from : '.
$destinat.'
date : '.
$date.' à '.$time.'
titre : '.
$titre.'
message :
'.
$mp;
mysql_query("insert into table_post values('','".$date."','".$titre."','".$mp."','".$id_papa."','".$expedit."','".$destinat."','".$lu."')");
header("location: mp.php");
?>
Merci.
Posté : 21 avr. 2007, 14:25
par jojolapine
non, je n'utilise pas htmlentities, ni aucune autre fonction de ce style.
et ça:
$reponse=htmlentities($reponse);
c'est quoi c'est du poulet?

Posté : 21 avr. 2007, 14:26
par ruper
Arf, je l'avais pas vu^^.
J'ai meme eu du mal a le voir la^^.
Désolé.
Posté : 21 avr. 2007, 14:30
par rupper
Bah en fait meme en l'enlevant j'ai toujours les balises html.