Page 1 sur 1

problème html source dans ma bdd

Posté : 21 nov. 2007, 11:17
par Yo
Bonjour à tous,

J'utilise tinymce (WYSIWYG) sur ma zone d'administration afin de pouvoir mettre en forme facilement mes articles.

Pas de problème pour l'installation, et l'intégration à mes différents formulaires qui enregistres les articles dans la BDD, mais il y a 2 hic :
_ Lorsqu'il y a un mot comme "l'école", un antislash se glisse dans l'enregistrement sur ma BDD
_ En fait, voici un exemple de code html qu'y à l'origine était correct, mais à l'enregistrement à mis des anti slash un peu partout
<p>Bienvenue sur la pr&eacute;sentation de l\'&eacute;cole</p><p>fekfe,fke,fke,ffe</p><p align=\"right\"><strong><font color=\"#ff6600\"><img src=\"tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif\" border=\"0\" alt=\"Cool\" title=\"Cool\" />ekfn,ekfek,nfe</font></strong></p>
Ce qui fait que l'image ne se voit pas, la couleur n'est pas bonne, l'alignement non plus etc.
Je ne sais pas si cela est du au jeu de caractère, j'utilise le latin1_general_ci

Merci d'avance pour votre aide, cordialement

Posté : 21 nov. 2007, 11:33
par Calimero
Bonjour,

Edite ton php.ini et positionne la variable magic_quotes_gpc à la valeur Off. Et redémarre apache dans la foulée ;-)

Posté : 21 nov. 2007, 11:38
par Yo
euh, je n'ai pas préciser que je suis actuellement sur free (avant de passer sur ovh dès que le site est finit...)
donc pas moyen d'éditer le php.ini....

Posté : 21 nov. 2007, 11:51
par Calimero
Tu peux alors passer par un fichier .htaccess qui contiendrait cette ligne :

Code : Tout sélectionner

php_flag magic_quotes_gpc off

Posté : 21 nov. 2007, 11:55
par Yo
J'ai créé ce .htacces, mais désormais sur mes pages j'ai "erreur interne du serveur".

Par ailleurs j'ai bien intégré dans mon code le
	 $texteins=addslashes($texteins);
Mais j'arrive pas à comprendre de ou cela peut il venir

Posté : 21 nov. 2007, 12:04
par Ryle
Chez Free (comme chez beaucoup d'hébergeurs) , les magic quotes sont activées par défaut.

Donc les apostrophes et guillemets que tu reçois via get ou post sont backslashés automatiquement. Si tu ajoutes en plus un addslashes(), alors tu double cet effet :

Code : Tout sélectionner

" L'école " ==(magic quotes)==> " L\'école " ==(addslashes())==> " L\\\'école "
Du coup l'antislash ajouté par les magic quotes est protégé à son tour et lorsque tu insères en base, tu vas stocker " L\'école " au lieu de " L'école " :)

Tu peux tester si les magic quotes sont activées ou pas pour savoir s'il faut ou non faire un addslashes :
if (!get_magic_quotes_gpc()) { // magic quotes désactivées
    $lastname = addslashes($_POST['lastname']);
} else {
    $lastname = $_POST['lastname'];
}

Posté : 21 nov. 2007, 12:19
par Yo
Ok merci beaucoup pour l'information.

Alors je viens de retirer l'anti slash... cela ne fonctionnait toujours pas ... mais là étrange : j'ai ajouter un "textarea" pour le titre du sujet pour voir si il y avait toujours l'effet antislash dans la BDD... et là surprise rien du tout ! parfait !

Alors là je comprends plus rien, je dois avoir une erreur dans mon code pour l'envoi à la BDD de mon "texte" mais je ne vois pas où... si quelqu'un peut m'éclairer...
<?php
}

else
{

  $id=$_GET["id"];



$sql = "SELECT id, texte, titre
FROM pres_profs
WHERE id='$id'";

// on envoie la requ&ecirc;te
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
$data = mysql_fetch_array($req);

	?>
                  <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
                    <p align="left">
                      <input type="hidden" name="action" value="inserer" />
                      <?
    ?>
                      <input type="hidden" name="idins" value="<? echo $id; ?>" />
                      <?
    ?><p align="left">Modification du nom du prof : 
                      <textarea name="titre" cols="75" rows="10" wrap="physical"><?php echo ''.$data[2].''?></textarea>
                    </span><br>
                            <br>
                            <br>
                          Texte pour la présentation du prof :
                          <textarea name="texte" cols="75" rows="10" wrap="physical"><?php echo ''.$data[1].'' ?></textarea>
                          --> ... </li>
                      </ul>
                    </div>
                    <ul>
                    </ul>
                    
                    <p>
                      <input type="submit" name="Submit" value="Ok" />
                    </p>
                  </form>
désolé pour la longueur de la source...

Posté : 21 nov. 2007, 12:23
par Yo
Résolu ! merci beaucoup, j'ai bien enlevé l'addslash et cela fonctionne parfaitement ! merci beaucoup pour votre rapidité, excellent ! ;)

Posté : 21 nov. 2007, 13:37
par Ryle
Modération :
J'ai ajouté le tag [Résolu]

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)