balise non interpretées

rupper
Invité n'ayant pas de compte PHPfrance

18 avr. 2007, 19:33

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

18 avr. 2007, 20:47

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
Quand tout le reste a échoué, lisez le mode d'emploi...

rupper
Invité n'ayant pas de compte PHPfrance

18 avr. 2007, 21:38

Mais si je n'utilise pas la fonction mail, mais une base de donnees?

Mammouth du PHP | 991 Messages

18 avr. 2007, 21:52

en essayant de remplacer les ' par des "

edit : je corrige les fautes ... encore désolé ....
Modifié en dernier par thehawk le 18 avr. 2007, 22:14, modifié 1 fois.
DevOps, Symfony4, Hoa

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 avr. 2007, 22:04

Avec quatre sucres, merci.

Mammouth du PHP | 991 Messages

18 avr. 2007, 22:16

Avec quatre sucres, merci.
pourquoi ??? j'ai pas compris ca s'adresse a qui ?

j'ai corrigé mes fautes ...
DevOps, Symfony4, Hoa

rupper
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 15:56

Alors j'ai testé mais ca n'a rien fait.
Avez vous une autre idée svp.

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 16:03

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... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

rupper
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 16:19

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 16:22

hmm.. tu peux nous montrer le code source du message ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

rupper
Invité n'ayant pas de compte PHPfrance

20 avr. 2007, 16:39

Arf, je ne suis pas chez moi, je n'ai pas le code en tete. Demain, je posterai le code.
merci

rupper
Invité n'ayant pas de compte PHPfrance

21 avr. 2007, 14:11

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.

ViPHP
ViPHP | 3607 Messages

21 avr. 2007, 14:25

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? :evil:

ruper
Invité n'ayant pas de compte PHPfrance

21 avr. 2007, 14:26

Arf, je l'avais pas vu^^.
J'ai meme eu du mal a le voir la^^.

Désolé.

rupper
Invité n'ayant pas de compte PHPfrance

21 avr. 2007, 14:30

Bah en fait meme en l'enlevant j'ai toujours les balises html.