Bonjour,

J'ai suivi le tuto "ajouter des commentaires sur news" et là quand j'ajoute "en localhost" des commentaires sur une news j'ai une erreur quand je mets un apostrophe. On peut "échapper" l’apostrophe avec \ .

Comment faire pour pouvoir ajouter des commentaires sans passer par des anti-slash ?
Je crois savoir qu'il faut utiliser stripslashes mais j'ai essayé plusieurs code sans succès !

Voici le code en question (voir.php):

<?php
    require "config.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    $id=$_GET'id'];
    $sql="SELECT * FROM news WHERE id=$id";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($req);
        echo "<h1>{$data"titre"]}</h1>";
        echo "<p>{$data"contenu"]}</p>";
        echo "<p align\"right\">".date("j/n/Y G:i",strtotime($data"date"]))."</p>";

        $sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    while ($data2=mysql_fetch_assoc($req)){
        echo "---------------------<br/>";
        echo $data2"pseudo"];
        echo "<p>{$data2"contenu"]}</p>";
        // echo ($data2"contenu"]);
        echo "---------------------<br/>";
    }
?>
<form action="addcom.php" method="post">
    Pseudo : <input type="text" name="pseudo"/><br />
    URL : <input type="text" name="url"/><br />
    Mail : <input type="text" name="mail"/><br />
    <textarea name="contenu" style="width:500px;height:200px;"></textarea>
    <input type="submit" value="Envoyer"/>
    <input type="hidden" name="news_id" value="<?php echo $data"id"] ?>"/>
</form>

Merci

6 réponses


stripslashes enlève les \ qui ont été ajoutés, tu dois l'utiliser lorsque tu affiches tes commentaires.
Lors de l'ajout d'un commentaire, c'est la fonction addslashes qui doit être utilisée ;)

  • 1 pour le stripslashes

Tu devrais lire un tuto sur comment éviter les injections sql : http://www.siteduzero.com/tutoriel-3-37762-eviter-les-injections-sql.html

$id = (!empty($_GET'id'])) ? intval($_GET'id']) : 0;
woubi
Auteur

Bonjour,

Merci pour vos réponse.

Je sais que ce code n'est pas bon mais je sais pas comment mettre ces fameux stripslashes (où les mettre)

Voila la fin du code de ma page voir.php :

<?php   while ($data2=mysql_fetch_assoc($req)){
        echo "---------------------<br/>";
        echo (stripslashes($data2"pseudo"]));
        echo "<p>(stripslashes{$data2"contenu"]})</p>";
        // echo ($data2"contenu"]);
        echo "---------------------<br/>";
    }
?>

J'ai une erreur sql

woubi
Auteur

Ce code non plus ne fonctionne pas ?

<?php echo "---------------------<br/>";
        echo stripslashes($data2"pseudo"]);?>
        <p><?php echo stripslashes($data2"contenu"]); ?></p> 
        <?php echo "---------------------<br/>"; 
    }
?>