Page 1 sur 1

Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 15:44
par reverb
Bonjour à tous,
Je suis confronté à un petit problème pour l'insertion des messages dans mon livre d'or, lorsqu'un membre laisse un message, des / apparaissent après chaque apostrophe :s pourtant mes bases de données sont bien en utf8_general_ci et ma connexion et bien en utf8 également :/

Voici mon code :
<?php session_start();
header('Location: livreor.php');
if(isset($_POST['SendSignature'])){
     if(!empty($_POST['membre_pseudo']) && !empty($_POST['messagelo'])){ 
                require_once("connexionlivreor.inc.php");
$reponse = $bdd->prepare('INSERT INTO commentaire (membre_pseudo,messagelo,dateedit) VALUES (:membre_pseudo,:messagelo,Now())'); $reponse->execute(array('membre_pseudo'=>$_POST['membre_pseudo'],'messagelo'=>$_POST['messagelo'])); 
} else { 
         echo "Au moins un des champs est vide."; 
	}
}
?> 
et voici ma connexion :
<?php
try
{
	$dns = 'mysql:host=localhost;dbname=livreor';
  $utilisateur = 'livreor';
  $motDePasse = 'mdp';
  $bdd = new PDO( $dns, $utilisateur, $motDePasse, array (PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8',PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
?> 
Je ne vois pas du tout d'ou l'erreur pourrait venir :/
Merci pour votre attention et votre aide
Sincèrement.

Re: Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 16:01
par ghost5922
Bonjour,

pour insert on utilise la fonction addslashes() pour ajouter des / devant les '

pour le select on utilise stripslashes() pour les retires

Re: Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 16:04
par moogli
salut,


ce ne serais pas plutôt de \ ? parce que les / n'on pas de signification parculière.

dans ce cas il s'agit surement d'un truc du genre magic_quote (gpc et ou runtime) d'activé ? a voir dans un phpinfo.

le header sur le premier code indiqué me fait dire que tu ne doit pas insérer grand chose dans la base ;)


on n'utilise par addslashes ou stripslashes sur les données de base il existe des fonctions / méthodes pour cela (avec pdo voir la méthode quote, ou dans le cas ici l'utilisation de requete préparée).

avec l'extension mysql => mysql_real_escape_string.

@+

Re: Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 16:09
par reverb
Désolé effectivement si je ne vous met pas le code du livre d'or ^^"
voici livreor.php :
<div id="formlivreor">
<fieldset>
<form action="signaturelivreor.php" method="post" name="SendSignature">
<?php if(isset($_SESSION['membre_pseudo'])) { ?>
<p class="classinscr"><label>Votre pseudo :
<input type="text" name="membre_pseudo" value="<?php if(isset($_SESSION['membre_pseudo'])) echo $_SESSION['membre_pseudo'];?>" readonly />
</label>
</p>
<p class="classinscr">
<label>Votre message :
  <textarea name="messagelo" cols="138" rows="12"></textarea>
</label>
</p>
<p class="classinscr">
<label>
<input type="submit" name="SendSignature" value="envoyer" />
</label>
</p>
</form>
</fieldset>
<?php  }
else
{
	echo '<p class="textewarning">'."Vous devez être connecté pour laisser un commentaire dans le livre d'or".'</p>';
}
?>
</div>
<?php require_once("connexionlivreor.inc.php"); 
$reponse = $bdd->prepare('SELECT membre_pseudo,messagelo,dateedit FROM commentaire ORDER BY dateedit DESC');
$reponse->execute();
$nb_signature = $reponse->rowCount();

if ($nb_signature==NULL){
        echo '<p class="textewarning">Aucune signature.<p>';
} else {
        while ($data = $reponse->fetch(PDO::FETCH_OBJ)){ 
echo '<div id="comlivreor">';
        echo '<p class="textepseu">'.htmlspecialchars($data->membre_pseudo).'</p>';
        echo '<p class="textesimple">'.htmlspecialchars($data->messagelo).'</p>';
        echo '<p class="classtextdatecrea">'.htmlspecialchars($data->dateedit).'</p>'; 
echo '</div>';
        } // end while
         } $reponse->closeCursor(); ?>


</div>
<?php include("footer.inc.php"); ?>
<?php echo '</div>'; ?>
htmlspecialchars n'est pas sensé effectuer les mêmes fonctions ? ( + sécurisé ) ?

Merci pour votre attention et votre aide,
Sincèrement :).

Re: Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 17:22
par moogli
non, regarde dans la doc, c'est dans le premier carré violet ... :)

Les remplacements effectués sont :
Les remplacements effectués sont :
"&" (et commercial) devient "&"
""" (guillemets doubles) devient """ (ou &apos;) lorsque ENT_NOQUOTES n'est pas utilisée.
"'" (guillemet simple) devient ' uniquement lorsque ENT_QUOTES est utilisée.
"<" (inférieur à) devient "<"
">" (supérieur à) devient ">"
quand reste vérifie si les magic_quote sont activée si c'est le cas désactive.

et pour finir un article qui parle de la magie noire des apostrophes magiques

@+

Re: Soucis de de '/' = "j/'espère"

Posté : 04 juin 2013, 17:30
par reverb
Merci beaucoup encore une fois pour cette réponse détaillé moogli :)
Sincèrement.