Vous n'êtes pas identifié. Veuillez vous connecter ou vous inscrire.


Ecrire une réponse

Ecrire une réponse

Composez et envoyez votre nouvelle réponse

Vous pouvez utiliser : BBCode Images Binettes

Les champs marqués %s doivent être remplis avant d'envoyer ce formulaire.

Information obligatoire pour les invités


Information obligatoire

Revue du sujet (plus récents en tête)

23

Hum .... ^^
- Qui moi? Mes chevilles? ^^ Nan.... Jamais!! smile

22

Mais bien sûr que toad avait raison, qui en doutait ? smile

21

C'est bon, problème résolu, Toad avait raison c'est ce mysql_real_escape_ le fautif. tongue
Voilà mon code final:

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{

$heur = date('H') + 1;
$date = date('d/m/y à ') . $heur . date(':i');
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(nl2br(htmlspecialchars($_POST['message'])));
mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $date . "')");

}

Merci à tous de m'avoir aidé! Maintenant j'ai un livre d'or sans bug!!
J'espère que cette erreur bête pourra aider certains qui ont le même problème.
Bonne fin de soirée à tous!! smile

20

essaye ca
$heur = date('H') + 1;
$date = date('d/m/y à ') . $heur . date(':i');
$pseudo = mysql_real_escape_string($_POST['pseudo']);
$message = mysql_real_escape_string($_POST['message']);
mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $date . "')");

}



et pour les afficher
echo htmlspecialchars(stripslashes[message]);

19

Pour toad: Tu voudrais dire que je doit mettre le nl2br avant le mysql_real_escape_.. ?
ex: $message = mysql_real_escape_string(nl2br(htmlspecialchars($_POST['message'])));

Pour Infobarquee:

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{

$heur = date('H') + 1;
$date = date('d/m/y à ') . $heur . date(':i');
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $date . "')");

}

18

Pour les curieux, voilà la liste des caractères échappés par mysql:

switch (*from) {
    case 0:                             /* Must be escaped for 'mysql' */
      escape= '0';
      break;
    case '\n':                          /* Must be escaped for logs */
      escape= 'n';
      break;
    case '\r':
      escape= 'r';
      break;
    case '\\':
      escape= '
\\';
      break;
    case '
\'':
      escape= '\'';
      break;
    case '"':                           /* Better safe than sorry */
      escape= '"';
      break;
    case '\032':                        /* This gives problems on Win32 */
      escape= 'Z';
      break;
    }

17

bonjour,
tu pourrais montrer ton code et dire aussi le type de champs dans ta bdd.

Toad m'a devancé smile

16

Je viens de faire des tests et c'est mysql_real_escape_string() qui escape également les \n, tu peux soit l'appeler au dernier moment (comme il se doit), avant de faire une injection sql et ca marchera, soit laisser tel quel et faire la conversion lors de l'affichage:

Première méthode:

$message = nl2br(htmlspecialchars($_POST['message']));

Seconde méthode:

echo '<p><i class="date">Le ' . $donnees['date'] . '</i><strong> ' . $donnees['pse\
udo'
] . '</strong> a écrit :<br />' . nl2br($donnees['message']) . '</p>';

15

Je ne t'en veux pas d'avoir poster apres mon post.
Mais il ne m'affiche toujours pas les retours à la ligne. Essayez par vous même : http://mtdev.lescigales.org/livredor.php  (vous pouvez faire des test je les supprimerais avec le mysql.)

14

foreach ($_POST as $name => $value) {
        $_POST[$name]=mysql_escape_string($value);
}

Simple, efficace et... sûre.

13

toad a écrit:

Oui, exactement, alors pourquoi parler de l'insertion dans une base de données ? smile

Parce que je sais très bien que tu aurais relevé la chose wink ou qu'elle aurait été demandé.

@ Eric2A
Non je ne le prends pas mal du tout

voilà mon code que j'ai adapté pour ici, il vaut ce qu'il vaut

if ($_POST) {
                 foreach ($_POST as $name => $value) {
                $_POST[$name]=mysql_escape_string($value);
                }
$err=check();
               if($err) {
                           echo "<font color='red'>";
                          for ($i=0;$i<sizeof($err);$i++) {
                         echo $err[$i]."<br>";
              }
 
             }
else {
             $query="INSERT INTO `livredor` (`date`,`text`) VALUES (NOW(),'".$_POST['text']."')";
              mysql_query($query) or die(mysql_error());
             echo "<meta http-equiv='refresh' content='0; url=livredor.php'>";
              exit();
            }
}


function check() {
global $path,$id;
$err=Array();


                         if (!$_POST['text']) $err[sizeof($err)]="Veuillez entrer un texte";

                          return $err;
                          }

12

Infobarquee et Toad, je vais vous faire encore rire...

Mattrix, je ne vois pas d'où peux venir ton problême, vu que ton code est bon.

Désolé !

La prochaine fois, je participerais quand je serais sûr d'avoir la solution.

@ Infobarquee :
J'éspère que tu n'as pas pris mal que je parle de sécurité après ton post.

11

Pour répondre à eric, enfait je veux que dans la base de donné mysql il enregistre les enter sous la forme <br> pour que quand je fasse un petit echo en bas de la page il me mette les retours à la ligne. hors mon nl2br() me les enregistres sous la forme \r\n et donc le html ne les transforme pas en retour à la ligne.

Mon php (partiel):

<?php
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
?>

10

Oui, exactement, alors pourquoi parler de l'insertion dans une base de données ? smile

9

Mea culpa, pfff
la prochaine fois je mettrais tout mon script, et puis quoi encore? smile wink

on demande pour le retour chariot, pas pour la sécurité, non? wink



Currently used extensions: pun_poll, pun_admin_manage_extensions_improved. Copyright © 2008 PunBB