Page 1 sur 2

Insertion sauvage de slash dans ma base de données

Posté : 11 févr. 2011, 20:59
par equiibriste
Bonjour à tous,

je suis en train de créer un site autour des auteurs de jeux de société avec une base wordpress.

je souhaite faire un formulaire qui crée une page avec leurs informations perso, seulement, à chaque fois, ça envoie dans la base de donnée le contenu en rajoutant des "/// avant chaque apostrophe (') de mon code html et en plus, les accents et caractères spéciaux ne passent pas.

ce qui est bizare c'est que quand je place les articles (dans wordpress) dans la corbeille et que je les restaures, les "/// disparaissent et le contenu est bon (en dehors des accents et caractères spéciaux)

Je précise que tout se passe en 3 partie :
1 remplir un formulaire
2 affichage du résultat (prévisualisation)
3 validation des données et envoie dans la BDD pour créer la page wordpress.


je ne sais pas comment résoudre le problème....

merci d'avance de vos réponses,

Max, un peu (beaucoup ???) désespéré.

Code : Tout sélectionner

<?php global $current_user; if ( isset($current_user)) { if(isset($_POST['carte'])) { $dsn="******"; $login = "************"; $bdd= new PDO($dsn, $login , $pass); $bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO wp_haut_lud_posts(ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count) VALUES ('', ?, NOW(), '', ?, ?, '', 'pending', 'open', 'open', '', '', '', '', NOW(), NOW(), '', 85, 'http://hauteursludiques.com/auteurs/', 0, 'page', '', 0)"; $stmt= $bdd->prepare($sql); get_currentuserinfo(); $carte_decod = htmlspecialchars_decode($_POST['carte']); $tmp=array( $user_ID, mysql_real_escape_string($carte_decod), mysql_real_escape_string($_POST['nom2'])); $stmt->execute($tmp); } Else { if(isset($_POST['nom'])) { ?> <h1><?php echo $_POST['nom'];?></h1> <div class="carte"> <div class="carteb1"> <div class="carte-bordure"> <p><img class="aligncenter size-thumbnail wp-image-103" style="border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;" title="<?php echo $_POST['nom'];?>" src="<?php if($_POST['img'] !==''){echo $_POST['img'];}?>" alt="" width="214" height="150" /></p> <div class="hcart"> <p>Métier : <strong><?php echo $_POST['metier'];?></strong></p> <p>Département : <strong><?php echo $_POST['departement'];?></strong></p> </div> <h1>Ludographie :</h1> <div class="edit"> <p><strong>Jeux édités :</strong></p> <ul> <?php for($i=1;$i<9;$i++) { if($_POST["jeu-edite-".$i]!=='') { echo'<li><span style="font-size: 10px;">'.$_POST["jeu-edite-".$i].'</span></li>'; } } ?> </ul> </div> <div class="edit"> <p><strong>Prototypes :</strong></p> <ul> <?php for($i=1;$i<9;$i++) { if($_POST["proto-".$i]!=='') { echo'<li><span style="font-size: 10px;">'.$_POST["proto-".$i].'</span></li>'; } } ?> </ul> </div> <p style="clear: both; height: 1px;"> </p> </div> </div> </div> <?php $carte_site1 ="<div class='carte'><div class='carteb1'><div class='carte-bordure'><p><img class='aligncenter size-thumbnail wp-image-103' style='border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;' title='".$_POST['nom']."' src='".$_POST['img']."' alt='' width='214' height='150'/></p><div class='hcart'><p>Métier : <strong>".$_POST['metier']."</strong></p><p>Département : <strong>".$_POST['departement']."</strong></p></div><h1>Ludographie :</h1><div class='edit'><p>Jeux édités :</p><ul>"; for($i=1;$i<9;$i++) { if($_POST["jeu-edite-".$i]!=='') { $carte_site2=$cartesite2."<li><span style='font-size: 10px;'>".$_POST['jeu-edite-'.$i]."</span></li>"; } } $carte_site2= $carte_site2."</ul></div><div class='edit'><p>Prototypes :</p><ul>"; for($i=1;$i<9;$i++) { if($_POST["proto-".$i]!=='') { $carte_site2=$carte_site2."<li><span style='font-size: 10px;'>".$_POST["proto-".$i]."</span></li>"; } } $carte_site2 = $carte_site2."</ul></div><p style='clear: both; height: 1px;'></p></div></div></div>";?> <?php echo $carte_site1.$carte_site2;?> <form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data"> <input type="hidden" name="nom2" value="<?php echo $_POST['nom'];?>"> <input type="hidden" name="carte" value="<?php echo $carte_site1.$carte_site2 ?>"> <input type="submit" value="valider ma carte"> <?php } Else { ?> <form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data"> Vos nom et prénom : <input type="text" value="" name="nom"><br/> url de votre image (largeur:212px) : <input type="text" name="img"><br/><br/> <div class="carte" style="width:400px; margin-right:50px;"> <div class="carteb1"> <div class="carte-bordure"><p><img class="aligncenter size-thumbnail wp-image-103" style="border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;" title="Baby-Boom-sourd" src="http://hauteursludiques.com/wp-content/uploads/2011/01/Baby-Boom-sourd1-214x150.jpg" alt="" width="214" height="150" /></p> <div class="hcart"><p>Métier : <input type="text" name="metier"></p> <p>Département : <input type="text" name="departement"></p></div> <h1>Ludographie :</h1> <div class="edit" style="width:160px;"><p><strong>Jeux édités :</strong></p> <ul> <li><input type="text" name="jeu-edite-1"></li> <li><input type="text" name="jeu-edite-2"></li> <li><input type="text" name="jeu-edite-3"></li> <li><input type="text" name="jeu-edite-4"></li> <li><input type="text" name="jeu-edite-5"></li> <li><input type="text" name="jeu-edite-6"></li> <li><input type="text" name="jeu-edite-7"></li> <li><input type="text" name="jeu-edite-8"></li> </ul> </div> <div class="edit"><p><strong>Prototypes :</strong></p> <ul> <li><input type="text" name="proto-1"></li> <li><input type="text" name="proto-2"></li> <li><input type="text" name="proto-3"></li> <li><input type="text" name="proto-4"></li> <li><input type="text" name="proto-5"></li> <li><input type="text" name="proto-6"></li> <li><input type="text" name="proto-7"></li> <li><input type="text" name="proto-8"></li> </ul> </div> <p style="clear: both; height: 1px;"> </p></div> </div> </div> <input type="submit" value="créer ma carte"></form> <?php } } } else { echo 'Merci de vous connecter'; } ?>

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 21:58
par stealth35
t'as vérifié les magic_quote ?
http://php.net/manual/fr/security.magicquotes.php

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:15
par equiibriste
lorsque je fais :


echo get_magic_quotes_gpc();


ca renvoie 1.....

le problème c'est que je sais pas comment éviter cette fonction dans mon code....

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:19
par moogli
un peut de lecture supplémentaire sur le sujet !

http://www.phpdebutant.org/article150.php

@+

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:23
par stealth35
le problème c'est que je sais pas comment éviter cette fonction dans mon code....
c'est dans le lien : Désactiver les guillemets magiques :wink:

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:26
par equiibriste
Je l'ai fait ! :)


ca enlève une patie des antislash^^

voici un extrait du code renvoyé dans ma page wordpress :

Code : Tout sélectionner

<div class=\'carte\'> <div class=\'carteb1\'> <div class=\'carte-bordure\'> <p><img class=\'aligncenter size-thumbnail wp-image-103\' style=\'border-top-width: 2px; border-top-style: solid; border-top-color: #000000; border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: black;\' title=\'dfgn\' src=\'dgn\' alt=\'\' width=\'214\' height=\'150\'/></p> <div class=\'hcart\'> <p>Métier : <strong>dfgn</strong></p> <p>Département : <strong>fdgn</strong></p> </div> <h1>Ludographie :</h1> <div class=\'edit\'> <p>Jeux édités :</p> <ul> <li><span style=\'font-size: 10px;\'>gfg</span></li> </ul> </div> <div class=\'edit\'> <p>Prototypes :</p> <ul></ul> </div> <p style=\'clear: both; height: 1px;\'> </div> </div> </div>
le problème c'est qiu'il reste des " \" quand même.... GRRRRRRRRRRR

:)

une autre idée pour virer le reste des antislashs ?

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:28
par stealth35
ils sont aussi dans ta base ?

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:31
par moogli
qu'elle magic_quote passée à on ?

Il est possible que les \ soient dans la base s'il n'ont pas étaient géré à grand coup de stripslashes.

le mieux serait de regarder directement avec le client mysql en ligne de commande.

@+

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 22:53
par equiibriste
les \ sont présent dans la base de donnée.

le code de la page est strictement le même que celui qui est dans la base :)

du coup, ça veux dire que c'est au moment de l'envoie du formulaire que ça chie... :s

je suis mauvais en php..... :s faut que je progresse ! :)

avec votre aide :)

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 23:13
par stealth35
les \ sont présent dans la base de donnée.

le code de la page est strictement le même que celui qui est dans la base :)

du coup, ça veux dire que c'est au moment de l'envoie du formulaire que ça chie... :s

je suis mauvais en php..... :s faut que je progresse ! :)

avec votre aide :)
aie, il va falloir les enlever :(

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 23:14
par equiibriste
oui, mais comment ? :)

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 23:36
par xTG
Voir la fonction stripslashes(). :)

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 23:41
par equiibriste
j'ai modifier le code de mon formulaire :

Code : Tout sélectionner

<form action="http://hauteursludiques.com/debuter/nouvel_auteur/" method="post" enctype="multipart/form-data"> <input type="hidden" name="nom2" value="<?php echo $_POST['nom'];?>"> <input type="hidden" name="carte" value="<?php echo stripslashes($carte_site1.$carte_site2) ?>"> <input type="submit" value="valider ma carte">
Mais ce ne change rien, les antislashes sont toujours là :(

Re: de l'aide ..... s'il vous plais !

Posté : 11 févr. 2011, 23:47
par equiibriste
Pour info, j'ai utilisé ce code pour viré les deux premières paires d'antislash :

Code : Tout sélectionner

if (get_magic_quotes_gpc()) { $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); while (list($key, $val) = each($process)) { foreach ($val as $k => $v) { unset($process[$key][$k]); if (is_array($v)) { $process[$key][stripslashes($k)] = $v; $process[] = &$process[$key][stripslashes($k)]; } else { $process[$key][stripslashes($k)] = stripslashes($v); } } } unset($process); }
il reste un antislash avant chaque apostrophe....

Re: de l'aide ..... s'il vous plais !

Posté : 12 févr. 2011, 00:12
par equiibriste
Personne n'a de pistes ? ?? :(