Bonjour à tous

j'ai ce petit formulaire

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" href="/config/style.css" type="text/css" media="screen"/>
        <title>Site FFS2 BI</title>
    </head>
<body>
<div class="page">
    <div class="conteneurcent">
        <?php
            $link = mysql_connect ($dbhost2,$dbuser2,$dbpass2) or die ('Erreur : '.mysql_error() );
            mysql_select_db($db2) or die ('Erreur :'.mysql_error());
            mysql_query("SET NAMES 'utf8'");
            $sql="SELECT * FROM bi ORDER BY `id` DESC ";
            $result = mysql_query($sql,$link) or die ('Erreur : '.mysql_error() );
            $total = mysql_num_rows($result);
            mysql_close($link);
            if($total) 
                {
                    while($row = mysql_fetch_array($result))
                        {
                        ?><div class="conteneurcent2"><?php
                            ?><div class="Hb1L"><?php echo $row"id"];?></div><?php
                            echo"<br>";
                            ?><div class="Hb2"><?php echo nl2br($row"message"]);?></div><?php
                            echo"<br>";
                            echo"<br>";
                        ?></div><?php

                        }
                }
                if (isset($_POST)&&isset($_POST'message']))
                    {
                        $response = recaptcha_check_answer(Secret, $_SERVER'REMOTE_ADDR'], $_POST'recaptcha_challenge_field'], $_POST'recaptcha_response_field']);
                        if($response->is_valid)
                            {

                                extract ($_POST);
                                $message=htmlentities($message);
                                $message=str_replace("\'","'",$message);
                                $destinataire=" *****@*****.fr";
                                $sujet="Formulaire de contact";
                                $msg="B-I\n
                                Message: $message\n";
                                $entete="From: B-I";
                                mail($destinataire,$sujet,utf8_decode($msg),$entete);
                                ?><div class="Hb1L"><?php   echo "Votre message a bien été envoyé, s'il n'apparait pas, ne le renvoyé pas, il sera intégré plus tard";?></div><?php

                                str_replace("\n","<br>", $message); 
                                $link = mysql_connect ($dbhost2,$dbuser2,$dbpass2) or die ('Erreur : '.mysql_error() );
                                mysql_select_db($db2) or die ('Erreur :'.mysql_error());
                            //  mysql_query("SET NAMES 'utf8'");
                                $sql = "INSERT INTO `bi` ( `id` , `message` ) 
                                VALUES ('', '$message')";
                                mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
                                mysql_close();
                                unset($_POST);
                                ?>
                                <meta http-equiv="refresh" content="5;URL=./bi.php">
                                <?php
                            }
                        else{
                                ?><div class="Hb1L"><?php   echo "Votre message a été refusé suite à un doute sur votre identité physique.";?></div><?php
                                unset($_POST);
                                ?>
                                <meta http-equiv="refresh" content="5;URL=./bi.php">
                                <?php
                            }
                    }
                else 
                    {
                        ?>
                        <div class="Hb1L">          
                        <form method="post" action="bi.php">
                        Message anonyme :<br /><textarea name="message" cols="150" rows="15"></textarea><br/>
                        <?= recaptcha_get_html(PubKey); ?>
                        <input type="submit" value="Envoyer" />
                        </form>
                        </div>
                        <?php
                    }

?>
    </div>
    <div class="clear"></div>
</div>

</body>
</html>

et voici les résultat pendant toute l'évolution des données rentré

ordre:

1-entrée formulaire
2-stockée en base de donnée
3-affichage

bonjour à tous

bonjour à tous

bonjour à tous

éàù

éàù

éà ù

<meta http-equiv="refresh" content="5;URL=./bi.php">

<meta http-equiv="refresh" content="5;URL=./bi.php">

<meta http-equiv="refresh" content="5;URL=./bi.php">

mais celà ne s'execute pas OUF!

quand j'essaie de faire passer ce texte là, plantage de la BD et je ne sais pas pourquoi:

Pourquoi rester anonyme il faut avoir le courage de ses opinions.
Qu'est-ce-que je pense de FFS2 ? Je vais pas remettre mon post vous remerciant pour le boulot que vous faites, mais c'est largement mérité.
Ce que j'aimerai améliorer ? Si possible ça serai d'intégrer un module de booking pour les contrôleurs. Ce module pourra permettre au contrôleur de signaler quand est-ce-qu'il sera en poste sur un secteur. Le module permettrait de mentionner la position de contrôle et de saisir une plage horaire de présence.
Si vous avez besoin de plus d'infos sur ce que j'envisage, envoyez-moi un MP ou on se parle par Skype.
A l'usage ce booking pourrait être étendu aux pilotes, s'il fonctionne bien pour les contrôleurs.
Il faudrait mettre un rappel pour le dépot de plan de vol, si le vol est prévu à l'avance, comme ça on s'organise dans le groupe.
Voilà j'ai vidé mon sac pour l'instant, en attendant d'autres idées (plus ou moins) lumineuses.
Didier.
PS : Flo, tu me parlais d'une récompense pour mes posts sur jeuxvideos.com, c'est quoi ^^ ;)
A bientôt

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'est-ce-que je pense de FFS2 Je vais pas remettre mon post vous remerciant pour ' at line 2

je pense que c'est le '. mais normalement je ne devrai pas être géné.

pourriez vous me dire que faire pour m'en sortir parce là je me suis totalement perdu.

merci d'avance flo

4 réponses


coloo
Réponse acceptée

salut,

Ma première idée est d'échapper tes '
Plus d'info ici http://www.php.net/manual/fr/function.addslashes.php

Tu as oublié un truc par là $msg="B-I\n

++

flo3376
Auteur

je pense avoir réussi, pas sans mal,ça à l'air de tourner tu en penses quoi?

<div class="page">
    <div class="conteneurcent">
        <?php
            $link = mysql_connect ($dbhost2,$dbuser2,$dbpass2) or die ('Erreur : '.mysql_error() );
            mysql_select_db($db2) or die ('Erreur :'.mysql_error());
            mysql_query("SET NAMES 'utf8'");
            $sql="SELECT * FROM bi ORDER BY `id` DESC ";
            $result = mysql_query($sql,$link) or die ('Erreur : '.mysql_error() );
            $total = mysql_num_rows($result);
            mysql_close($link);
            if($total) 
                {
                    while($row = mysql_fetch_array($result))
                        {
                        ?><div class="conteneurcent2"><?php
                            ?><div class="Hb1L"><?php echo $row"id"];?></div><?php
                            echo"<br>";
                            ?><div class="Hb2"><?php echo nl2br( stripcslashes ($row"message"]));?></div><?php
                            echo"<br>";
                            echo"<br>";
                        ?></div><?php

                        }
                }
                if (isset($_POST)&&isset($_POST'message']))
                    {
                        $response = recaptcha_check_answer(Secret, $_SERVER'REMOTE_ADDR'], $_POST'recaptcha_challenge_field'], $_POST'recaptcha_response_field']);
                        if($response->is_valid)
                            {

                                extract ($_POST);
                                ?><div class="Hb1L"><?php   echo "Votre message a bien été envoyé, s'il n'apparait pas, ne le renvoyé pas, il sera intégré plus tard";?></div><?php
                                $message= addslashes(htmlspecialchars($message, ENT_QUOTES));
                                //$message= htmlspecialchars(addslashes($message), ENT_QUOTES);
                                $link = mysql_connect ($dbhost2,$dbuser2,$dbpass2) or die ('Erreur : '.mysql_error() );
                                mysql_select_db($db2) or die ('Erreur :'.mysql_error());
                                mysql_query("SET NAMES 'utf8'");
                                $sql = "INSERT INTO `bi` ( `id` , `message` ) 
                                VALUES ('', '$message')";
                                mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
                                mysql_close();
                                unset($_POST);
                                ?>
                                <meta http-equiv="refresh" content="5;URL=./bi.php">
                                <?php
                            }
                        else{
                                ?><div class="Hb1L"><?php   echo "Votre message a été refusé suite à un doute sur votre identité physique.";?></div><?php
                                unset($_POST);
                                ?>
                                <meta http-equiv="refresh" content="5;URL=./bi.php">
                                <?php
                            }
                    }
                else 
                    {
                        ?>
                        <div class="Hb1L">          
                        <form method="post" action="bi.php">
                        Message anonyme :<br /><textarea name="message" cols="150" rows="15"></textarea><br/>
                        <?= recaptcha_get_html(PubKey); ?>
                        <input type="submit" value="Envoyer" />
                        </form>
                        </div>
                        <?php
                    }

?>
    </div>
    <div class="clear"></div>
</div>

Addslashes résous effectivement ton problème d'insertion mais il ne te protégera jamais contre les injection de code sql je te conseil plutôt (vu que tu n'utilises pas PDO et que tu devrais) mysql-real-escape-string (ou mysql_escape_string)

ici un comparatif entre addslashes et mysql-real-escape-string

flo3376
Auteur

PDO est la prochaine étape, à ce moment ce qui m’intéressé c'était de limite les crash de script accidentel ou peu agressive.

PDO est ma prochaine cible :)

Nos routes risque de se recroisé.

Merci pour tous.

@+

Flo