Créer un compte
Connexion

Probleme Parsage BBCODE

Pour créer et répondre aux sujets, vous devez être connecté.
Ce sujet est résolu.
Pages: 1
Auteur Message
Aglzime
05-08-2010 à 20:32:16
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Bonjour,
j'ai trouver un petit code sur le SiteDuZero, mais je ne saisd pas comment l'inclure dans le code de ma page
voici le code que j'ai essayé (page en entier) envoyer.php:<?php
session_start();
// on vérifie toujours qu'il s'agit d'un membre qui est connecté
if (!isset($_SESSION['login'])) {
        // si ce n'est pas le cas, on le redirige vers l'accueil
        header ('Location: index.php');
        exit();
}

// on teste si le formulaire a bien été soumis
if (isset($_POST['Envoyer']) && $_POST['Envoyer'] == 'Envoyer') {
       
function parsecode($content) {
        // Parsage des balises
        $code = array(  
                '`&lt;italique&gt;(.+)&lt;/italique&gt;`isU',  
                '`&lt;gras&gt;(.+)&lt;/gras&gt;`isU',
                '`&lt;barre&gt;(.+)&lt;/barre&gt;`isU',
                '`&lt;lien&gt;(.+)&lt;/lien&gt;`isU',
                '`&lt;lien url=&quot;(.+)&quot;&gt;(.+)&lt;/lien&gt;`isU',
                '`&lt;image&gt;(.+)&lt;/image&gt;`isU',
                '`&lt;citation&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;citation nom=&quot;(.+)&quot;&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;citation lien=&quot;(.+)&quot;&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;taille valeur=&quot;(.+)&quot;&gt;(.+)&lt;/taille&gt;`isU'
        );  
       
        $html = array(  
                '<em>$1</em>',  
                '<strong>$1</strong>',
                '<del>$1</del>',
                '<a href="$1">$1</a>',
                '<a href="$1">$2</a>',
                '<img src="$1" alt="Image utilisateur" />',
                '<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
                '<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
                '<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
                '<span class="$1">$2</span>'
        );
       
        $content = htmlspecialchars($content);
        $content = preg_replace($code, $html, $content);
       
        // parsage des smilies
        $smiliesName = array(':magicien:', ':colere:', ':diable:', ':ange:', ':ninja:', '&gt;_&lt;', ':pirate:', ':zorro:', ':honte:', ':soleil:', ':\'\\(', ':waw:', ':\\)', ':D', ';\\)', ':p', ':lol:', ':euh:', ':\\(', ':o', ':colere2:', 'o_O', '\\^\\^', ':\\-°');
        $smiliesUrl  = array('magicien.png', 'angry.gif', 'diable.png', 'ange.png', 'ninja.png', 'pinch.png', 'pirate.png', 'zorro.png', 'rouge.png', 'soleil.png', 'pleure.png', 'waw.png', 'smile.png', 'heureux.png', 'clin.png', 'langue.png', 'rire.gif', 'unsure.gif', 'triste.png', 'huh.png', 'mechant.png', 'blink.gif', 'hihi.png', 'siffle.png');
        $smiliesPath = "http://monsite§.fr/images/smilies/";
       
        for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
                $content = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $content);
        }
       
        // Rtours à la ligne
        $content = preg_replace('`\n`isU', '<br />', $content);
       
        return $content;

}

if (isset($_POST["string"])) {
        $content = $_POST["string"];
       
        if (get_magic_quotes_gpc()) {
                $content = stripslashes($content);
        }

        echo parsecode($content); // Ecriture du contenu parsé.
}
        if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message_text'])) {
                $erreur = 'Au moins un des champs est vide.';
        }
        else {
                $base = mysql_connect ('host', 'idbdd', 'psswrd');
                mysql_select_db ('nom_base', $base);
                mysql_query("SET NAMES 'utf8'");

                // si tout a été bien rempli, on insère le message dans notre table SQL
                $date_mois = date('d/m/Y');
                $hour_heure = date('H:i:s');
                $datenvoi = $date_mois. "&nbsp;&agrave;&nbsp;" .$hour_heure;
                $sql = 'INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.$datenvoi.'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['message_text']).'", "0")';
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

                mysql_close();

                header('Location: membre.php');
                exit();
        }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ecrire un message à un membre!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="bbcode/mep.css" rel="stylesheet" type="text/css" media="all" />
<link rel="stylesheet" type="text/css" href="bbcode/skin.css">
<script type="text/javascript" src="bbcode/bbc.js"></script>
<link href="includes/design.css" rel="stylesheet" type="text/css" />
</head>

<body>
<a href="membre.php">Retour à l'accueil</a><br /><br />
Envoyer un message :<br /><br />

<?php
$base = mysql_connect ('sql.free.fr', '', '');
mysql_select_db ('nom_base', $base);
mysql_query("SET NAMES 'utf8'");


// on prépare une requete SQL selectionnant tous les login des membres du site en prenant soin de ne pas selectionner notre propre login, le tout, servant à alimenter le menu déroulant spécifiant le destinataire du message
$sql = 'SELECT membre.login as nom_destinataire, membre.id as id_destinataire FROM membre WHERE id <> "'.$_SESSION['id'].'" ORDER BY login ASC';
// on lance notre requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows ($req);

if ($nb == 0) {
        // si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
        echo 'Vous êtes le seul membre inscrit.';
}
else {
        // si au moins un membre qui n'est pas nous même a été trouvé, on affiche le formulaire d'envoie de message
        ?>
        <form action="envoyer.php" method="post">
        Pour :<select name="destinataire">
        <?php
        // on alimente le menu déroulant avec les login des différents membres du site
        while ($data = mysql_fetch_array($req)) {
                echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
        }
        ?>
        </select><br />
        Titre : <input type="text" name="titre" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim(($_POST['titre']), ENT_QUOTES, "UTF-8"))); ?>"><br />
        Message :
        <div>
               
                        <p>
                                <input type="button" value="G" onclick="insertTag('&lt;gras&gt;', '&lt;/gras&gt;', 'message_text')" />
                                <input type="button" value="I" onclick="insertTag('&lt;italique&gt;', '&lt;/italique&gt;', 'message_text')" />
                                <input type="button" value="Lien" onclick="insertTag('', '', 'message_text', 'lien')" />
                                <input type="button" value="Image" onclick="insertTag('&lt;image&gt;', '&lt;/image&gt;', 'message_text')" />
                                <input type="button" value="Citation" onclick="insertTag('', '', 'message_text', 'citation')" />
                               
                                <select onchange="insertTag('&lt;taille valeur=&quot;' + this.options[this.selectedIndex].value + '&quot;&gt;', '&lt;/taille&gt;', 'message_text');">
                                        <option value="none" class="selected" selected="selected">Taille</option>
                                        <option value="ttpetit">Très très petit</option>
                                        <option value="tpetit">Très petit</option>
                                        <option value="petit">Petit</option>
                                        <option value="gros">Gros</option>
                                        <option value="tgros">Très gros</option>
                                        <option value="ttgros">Très très gros</option>
                                </select>
                               
                                <img src="http://users.teledisnet.be/web/mde28256/smiley/smile.gif" alt=":)" onclick="insertTag(' :) ', '', 'message_text');" />
                                <img src="http://users.teledisnet.be/web/mde28256/smiley/unsure2.gif" alt=":euh:" onclick="insertTag(' :euh: ', '', 'message_text');" />
                        </p>
                       
                        <p>
                                <input name="previsualisation" type="checkbox" id="previsualisation" value="previsualisation" />
                                <label for="previsualisation">Pr&eacute;visualisation automatique</label>
                        </p>
                       
                </div>
               
                <Textarea name="message_text" onkeyup="preview(this, 'previewDiv');" onselect="preview(this, 'previewDiv');" id="message_text" cols="150" rows="10"><?php if (isset($_POST['message_text'])) echo stripslashes(htmlentities(trim(($_POST['message_text']), ENT_QUOTES, "UTF-8"))); ?></Textarea>
               
                <div id="previewDiv"></div>
               
                <p>
                        <input type="button" value="Visualiser" onclick="view('message_text','viewDiv');" />
                </p>
               
                <div id="viewDiv"></div>
                        <input type="submit" name="Envoyer" value="Envoyer">
        </form>
       
</div>
        <?php
}
mysql_free_result($req);
mysql_close();
?>
</select>

<br /><br /><a href="deconnexion.php">Déconnexion</a>
<?php
// si une erreur est survenue lors de la soumission du formulaire, on l'affiche
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
La prévisualisation fonctionne très bien mais quand je lis le message envoyé , ya aucun effet sur le texte ( le texte n'est pas en forme désiré)! je ne sais pas c'est quoi le problème!
merci d'avance

ybouane
05-08-2010 à 20:32:56
ybouane
Admin
Bonjour,
essaye ça:
<?php
session_start();
// on vérifie toujours qu'il s'agit d'un membre qui est connecté
if (!isset($_SESSION['login'])) {
        // si ce n'est pas le cas, on le redirige vers l'accueil
        header ('Location: index.php');
        exit();
}

// on teste si le formulaire a bien été soumis
if (isset($_POST['Envoyer']) && $_POST['Envoyer'] == 'Envoyer') {
       
function parsecode($content) {
        // Parsage des balises
        $code = array(  
                '`&lt;italique&gt;(.+)&lt;/italique&gt;`isU',  
                '`&lt;gras&gt;(.+)&lt;/gras&gt;`isU',
                '`&lt;barre&gt;(.+)&lt;/barre&gt;`isU',
                '`&lt;lien&gt;(.+)&lt;/lien&gt;`isU',
                '`&lt;lien url=&quot;(.+)&quot;&gt;(.+)&lt;/lien&gt;`isU',
                '`&lt;image&gt;(.+)&lt;/image&gt;`isU',
                '`&lt;citation&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;citation nom=&quot;(.+)&quot;&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;citation lien=&quot;(.+)&quot;&gt;(.+)&lt;/citation&gt;`isU',
                '`&lt;taille valeur=&quot;(.+)&quot;&gt;(.+)&lt;/taille&gt;`isU'
        );  
       
        $html = array(  
                '<em>$1</em>',  
                '<strong>$1</strong>',
                '<del>$1</del>',
                '<a href="$1">$1</a>',
                '<a href="$1">$2</a>',
                '<img src="$1" alt="Image utilisateur" />',
                '<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
                '<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
                '<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
                '<span class="$1">$2</span>'
        );
       
        $content = htmlspecialchars($content);
        $content = preg_replace($code, $html, $content);
       
        // parsage des smilies
        $smiliesName = array(':magicien:', ':colere:', ':diable:', ':ange:', ':ninja:', '&gt;_&lt;', ':pirate:', ':zorro:', ':honte:', ':soleil:', ':\'\\(', ':waw:', ':\\)', ':D', ';\\)', ':p', ':lol:', ':euh:', ':\\(', ':o', ':colere2:', 'o_O', '\\^\\^', ':\\-°');
        $smiliesUrl  = array('magicien.png', 'angry.gif', 'diable.png', 'ange.png', 'ninja.png', 'pinch.png', 'pirate.png', 'zorro.png', 'rouge.png', 'soleil.png', 'pleure.png', 'waw.png', 'smile.png', 'heureux.png', 'clin.png', 'langue.png', 'rire.gif', 'unsure.gif', 'triste.png', 'huh.png', 'mechant.png', 'blink.gif', 'hihi.png', 'siffle.png');
        $smiliesPath = "http://monsite§.fr/images/smilies/";
       
        for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
                $content = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $content);
        }
       
        // Rtours à la ligne
        $content = preg_replace('`\n`isU', '<br />', $content);
       
        return $content;

}

if (isset($_POST["string"])) {
        $content = $_POST["string"];
       
        if (get_magic_quotes_gpc()) {
                $content = stripslashes($content);
        }

        echo parsecode($content); // Ecriture du contenu parsé.
}
        if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message_text'])) {
                $erreur = 'Au moins un des champs est vide.';
        }
        else {
                $base = mysql_connect ('host', 'idbdd', 'psswrd');
                mysql_select_db ('nom_base', $base);
                mysql_query("SET NAMES 'utf8'");

                // si tout a été bien rempli, on insère le message dans notre table SQL
                $date_mois = date('d/m/Y');
                $hour_heure = date('H:i:s');
                $datenvoi = $date_mois. "&nbsp;&agrave;&nbsp;" .$hour_heure;
                $sql = 'INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.$datenvoi.'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string(parsecode($_POST['message_text'])).'", "0")';
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

                mysql_close();

                header('Location: membre.php');
                exit();
        }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ecrire un message à un membre!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="bbcode/mep.css" rel="stylesheet" type="text/css" media="all" />
<link rel="stylesheet" type="text/css" href="bbcode/skin.css">
<script type="text/javascript" src="bbcode/bbc.js"></script>
<link href="includes/design.css" rel="stylesheet" type="text/css" />
</head>

<body>
<a href="membre.php">Retour à l'accueil</a><br /><br />
Envoyer un message :<br /><br />

<?php
$base = mysql_connect ('sql.free.fr', '', '');
mysql_select_db ('nom_base', $base);
mysql_query("SET NAMES 'utf8'");


// on prépare une requete SQL selectionnant tous les login des membres du site en prenant soin de ne pas selectionner notre propre login, le tout, servant à alimenter le menu déroulant spécifiant le destinataire du message
$sql = 'SELECT membre.login as nom_destinataire, membre.id as id_destinataire FROM membre WHERE id <> "'.$_SESSION['id'].'" ORDER BY login ASC';
// on lance notre requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows ($req);

if ($nb == 0) {
        // si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
        echo 'Vous êtes le seul membre inscrit.';
}
else {
        // si au moins un membre qui n'est pas nous même a été trouvé, on affiche le formulaire d'envoie de message
        ?>
        <form action="envoyer.php" method="post">
        Pour :<select name="destinataire">
        <?php
        // on alimente le menu déroulant avec les login des différents membres du site
        while ($data = mysql_fetch_array($req)) {
                echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
        }
        ?>
        </select><br />
        Titre : <input type="text" name="titre" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim(($_POST['titre']), ENT_QUOTES, "UTF-8"))); ?>"><br />
        Message :
        <div>
               
                        <p>
                                <input type="button" value="G" onclick="insertTag('&lt;gras&gt;', '&lt;/gras&gt;', 'message_text')" />
                                <input type="button" value="I" onclick="insertTag('&lt;italique&gt;', '&lt;/italique&gt;', 'message_text')" />
                                <input type="button" value="Lien" onclick="insertTag('', '', 'message_text', 'lien')" />
                                <input type="button" value="Image" onclick="insertTag('&lt;image&gt;', '&lt;/image&gt;', 'message_text')" />
                                <input type="button" value="Citation" onclick="insertTag('', '', 'message_text', 'citation')" />
                               
                                <select onchange="insertTag('&lt;taille valeur=&quot;' + this.options[this.selectedIndex].value + '&quot;&gt;', '&lt;/taille&gt;', 'message_text');">
                                        <option value="none" class="selected" selected="selected">Taille</option>
                                        <option value="ttpetit">Très très petit</option>
                                        <option value="tpetit">Très petit</option>
                                        <option value="petit">Petit</option>
                                        <option value="gros">Gros</option>
                                        <option value="tgros">Très gros</option>
                                        <option value="ttgros">Très très gros</option>
                                </select>
                               
                                <img src="http://users.teledisnet.be/web/mde28256/smiley/smile.gif" alt=":)" onclick="insertTag(' :) ', '', 'message_text');" />
                                <img src="http://users.teledisnet.be/web/mde28256/smiley/unsure2.gif" alt=":euh:" onclick="insertTag(' :euh: ', '', 'message_text');" />
                        </p>
                       
                        <p>
                                <input name="previsualisation" type="checkbox" id="previsualisation" value="previsualisation" />
                                <label for="previsualisation">Pr&eacute;visualisation automatique</label>
                        </p>
                       
                </div>
               
                <Textarea name="message_text" onkeyup="preview(this, 'previewDiv');" onselect="preview(this, 'previewDiv');" id="message_text" cols="150" rows="10"><?php if (isset($_POST['message_text'])) echo stripslashes(htmlentities(trim(($_POST['message_text']), ENT_QUOTES, "UTF-8"))); ?></Textarea>
               
                <div id="previewDiv"></div>
               
                <p>
                        <input type="button" value="Visualiser" onclick="view('message_text','viewDiv');" />
                </p>
               
                <div id="viewDiv"></div>
                        <input type="submit" name="Envoyer" value="Envoyer">
        </form>
       
</div>
        <?php
}
mysql_free_result($req);
mysql_close();
?>
</select>

<br /><br /><a href="deconnexion.php">Déconnexion</a>
<?php
// si une erreur est survenue lors de la soumission du formulaire, on l'affiche
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
Et la prochaine fois, fait attention à ne pas donner tes identifiants MYSQL lorsque tu envoi un code.(Je les ai aussi enlevés de ton message)

Cordialement

Image
Aglzime
05-08-2010 à 22:01:35
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Oh la connerie!
merci d'avoir enlever mes identifiants mysql merci beaucoup!
;)
Je n'ai pas fais attention :-/ .
que dieu te protège!
Sinon ça ne fonctionne pas malheureusement !

ybouane
05/08/2010 à 22:45:51
ybouane
Admin
Bonjour,
essaye les codes que je t'ai envoyé ici:
http://www.supportduweb.com/post-162-ecriture-arabe-bdd.html

Cordialement :)

Image
Pages: 1