Probleme avec htmlspecialchars!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme avec htmlspecialchars!

Re: Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 20:30

Si je comprenais seulement ce que veut dire un dump perso... #-o
Désolé je suis loin d’être un informaticien, j'ai fait 5 ans de lettre à la fac et maintenant je me recycle ^^
Té allé voir le site? T'en pense quoi?

Re: Probleme avec htmlspecialchars!

par moogli » 01 juil. 2011, 17:07

heu wé mais nan, c'est désactivable ça ;), donc prévoir d'autre solution (par exemple que ce passe t il si tu utilise ton script hors serveur web ?, pour par exemple faire un dump perso de ta base ? ben t'aura les \' ;) )

@+

Re: Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 13:57

Merci pour le tuto moogli, mais la solution me paraissait un peu complexe.
J'ai pose la question à un ami dév et il m'as donné la solution qui est en faite très simple.
Il faut ajouter la ligne suivante dans le .htaccess ( si .htaccess il y a :wink: ) :

php_flag magic_quotes_gpc off

Je viens de faire les test et sa marche parfaitement, en échappant tout sauf les guillemets simples ( le PDO ce charge du reste ).
Merci pour votre aide en tout cas ^^

PS : je vous ai demandé ça pour le cite de recettes italiennes que je développe avec des amis, si vous avez des suggestions, je suis preneur :mrgreen:

Re: Probleme avec htmlspecialchars!

par Skw33d » 01 juil. 2011, 13:19

Ben à vrai dire ca va dépendre de beaucoup de choses pour désactiver le magic quotes.

Si tu es en local, tu peux le désactiver toi même dans ton fichier php.ini, c'est les directives suivantes que tu dois passer à Off :

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

Après par contre si tu es sur un serveur mutualisé tu ne peux souvent pas touché à la configuration du php.ini, mais tu peux essayer avec ini_set au début de ton fichier de la mettre à Off.
Tu peux aussi passer par les .htaccess. Ensuite il y a quand même certains serveurs ou tu peux personnaliser ton php.ini et donc c'est très simple faut utiliser la première solution en passant les directives cités plus haut dans le fichier à Off.
Après sinon ta des fonctions qui se chargeront de traiter tous les échappements.

Une fonction sympa provenant de PHPFrance qui m'a servi un petit bout de temps ici : http://www.phpfrance.com/tutoriaux/inde ... gic-quotes

Différentes méthodes expliqués, la fonction à utilisé... Tu trouveras normalement ton bonheur.

Mais rappel qu'après avoir désactiver magic_quotes plus rien n'est échappé donc ATTENTION :!: :wink:

Re: Probleme avec htmlspecialchars!

par moogli » 01 juil. 2011, 13:16

Re: Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 12:24

Après pdo échappe aussi ce genre de chose, donc il est possible qu'au lieu d'insérer ' tu insère \\\' soit \'
Oui je passe bien par le PDO ^^
Je dois vous paraitre stupide mais je vois pas comment je peux changer cela :)
Apparemment mon problème concerne l'échappement des infos provenant des formulaires, pusique dans la base de donné le " \' "est enregistré en tant que telle!
J'ai cherché un tuto, mais rien trouvé,,,
Si il y a un dieu du php pour m'indiquer un tuto à suivre (pour un naab comme moi) :priere:

Re: Probleme avec htmlspecialchars!

par moogli » 01 juil. 2011, 12:13

les magic_quote, c'est :
- échappement des infos provenant des formulaires
- échappement des infos provenant des fichiers et base de données.

Après pdo échappe aussi ce genre de chose, donc il est possible qu'au lieu d'insérer ' tu insère \\\' soit \'

il faut que tu affiche cette info juste au début de la page de traitement du formulaire pour voir si c'est pas de la que viens le \ regarde dans la table avec un client SQL (se méfier de pma au cas a près tout c'est aussi du php XD).

/!\ pma c'est pas fait pour la conf de php hein, ce que tu a mis c'est pour la 1ère ligne du script qui affiche le contenu de ta db.

@+

Re: Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 12:06

Quelque chose dans ce genre?

ini_set("magic_quotes_runtime", 1);
Sauf que je ne vois pas comment modifier ce paramètre via phpmy admin du serveur sur lequel est hébergé mon site :?:

Re: Probleme avec htmlspecialchars!

par Mazarini » 01 juil. 2011, 12:01

Est ce que tu as vérifié via PHPMyAdmin ?

Autrement MAGIC_QUOTE est un paramètre de php.ini

Re: Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 11:47

Merci pour la rapidité de ta réponse !
Je viens de vérifier dans la base de données et dans le code source et malheureusement je ne vois pas de "J\& quotadore", mais bien "J\'adore".

Je soupçonne aussi la partie enregistrement :
<?php // connexion...

	
	if(!empty($_GET['id_recet']) AND ctype_digit($_GET['id_recet']) AND 
	   !empty($_POST['pseudo']) AND !empty($_POST['commentaire']))
	{
				$_GET['id_recet'] = (int)$_GET['id_recet'];							
				$req = $bdd->prepare('INSERT INTO commentaires(id_recette,auteur,commentaire,date_commentaire) VALUES(?,?,?,NOW())');
				$req->execute(array($_GET['id_recet'], $_POST['pseudo'], $_POST['commentaire']));
				
	}
	else
	{
		echo 'Un des champs est vide ou non présent dans le formulaire.';
	}
}
catch(Exception $e)
{
	die('Erreur :'.$e->getMessage());
}			
?>
Le MAGIC_QUOTE doit se mettre la dédans?

Re: Probleme avec htmlspecialchars!

par Mazarini » 01 juil. 2011, 11:15

Bonjour,

Tiré de la doc :
Les remplacements effectués sont :

* "&" (et commercial) devient "&"
* """ (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
* "'" (guillemet simple) devient "'" uniquement lorsque ENT_QUOTES est utilisée.
* "<" (inférieur à) devient "<"
* ">" (supérieur à) devient ">"
Donc le \' ne vient pas de cette fonction. Il est probable que ca apparaisse lors de l'enregistrement dans la base (cf MAGIC_QUOTE ?) En regardant le source html, tu dois voir "J\& quotadore"
Tu peux vérifier via phpmyadmin si mon hypothèse est juste.

Probleme avec htmlspecialchars!

par maizena » 01 juil. 2011, 10:57

Bonjour à tous.
Comme l'indique le titre du poste, je suis embêtée par une fonctionnalité de htmlspecialchars.
Le problème réside dans le fait que la fonction remplace tous les caractères spéciaux, ce qui est assez embêtant surtout avec le guillemets simples :cry:
Voici le code qui concerne l’affichage du commentaire en question :
<?php while ($data_commentaire = $rq_commentaire->fetch()): ?>
			<div id="commentaires">
				<p class="psedodate"><?php echo htmlspecialchars($data_commentaire['auteur']); ?><br/>
				<i>le <?php echo $data_commentaire['date_commentaire_fr']; ?></i></p>									
				<p class="coms"><?php echo nl2br(htmlspecialchars($data_commentaire['commentaire'])); ?></p>
			</div>
	<?php endwhile; // Fin de la boucle des commentaires ?> 
Ce qui me donne le résultat suivant avec un commentaire :
"Merci pour la recette! J\'adore cette entrée qui se marié parfaitement avec presque tous les menus ^^"

J'ai longuement cherché comment définir une exception pour certains caractères, mais je n'arrive pas à me retrouver dans la doc php...
Si quelqu'un aurait la gentillesse de me donner un coup de main :roll: