[Résolue] Autre solution que le htmlspecialchars ?

wythi
WRInaute discret
WRInaute discret
 
Messages: 140
Inscription: 20 Sep 2005

[Résolue] Autre solution que le htmlspecialchars ?

Message le Mar Déc 11, 2007 6:53

Bonjour,
voila dans un formulair de "livre d'or",
j'ai un problème de htmlspecialchars.

D'un coté, je suis obligé de l'indiquer dans mon script,
mais d'un autre, il me pause un problème avec les "'".

Vous n'auriez pas une autre solution ?

mon script :
http://www.psychologie-entre-aide.com/livreor.php

Regarder le problème des "'" lol

Merci,
wythi.
Dernière édition par wythi le Mer Déc 12, 2007 1:34, édité 1 fois.

Sir Dipp
WRInaute passionné
WRInaute passionné
 
Messages: 1025
Inscription: 21 Juil 2003

Message le Mar Déc 11, 2007 8:07

Salut,

Tu peux faire un stripslashes après ton htmlspecialchars pour résoudre ton problème.

Mais si tu veux éviter le code HTML et PHP je te conseil de voir du côté de strip_tags

A+

phloam
WRInaute passionné
WRInaute passionné
 
Messages: 1374
Inscription: 8 Avr 2005

Message le Mar Déc 11, 2007 9:40

Tu peux peut-être reconvertir les "\'" avec un str_replace lors de l'affichage....?


Elvis
WRInaute discret
WRInaute discret
 
Messages: 114
Inscription: 20 Mai 2005

Message le Mar Déc 11, 2007 10:00

D'après-moi le script de livre d'or que tu utilises agit comme si les magic_quotes étaient toujours désactivés, alors que sur ton serveur ils sont activés, ce qui fait que les ' sont échappés deux fois.


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mar Déc 11, 2007 10:02

le problème vient surement du fait que les magic quotes sont ON. avant d'ajouter dans la base de données, il ne faut pas ajouter de / si ON :
Code: Tout sélectionner
if (!get_magic_quotes_gpc()) {  //on rajoute des slash pour les magic_quote en OFF
   $unevariable = addslashes($_GET['unevariable']);
} else {
   $unevariable = $_GET['unevariable'];
}

wythi
WRInaute discret
WRInaute discret
 
Messages: 140
Inscription: 20 Sep 2005

Message le Mar Déc 11, 2007 16:52

Bonjours a tous,
merci de vos réponsses, voici la partie avec le "htmlspecialchars" :
Code: Tout sélectionner
... connection a la bdd
if (
isset
($_POST['pseudo']) AND
isset
($_POST['pays']) AND
isset
($_POST['message']))
{
    $pseudo =
mysql_real_escape_string
(
htmlspecialchars
($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $pays =
   (
htmlspecialchars   
   ($_POST['pays']));//le pays
   $message =
mysql_real_escape_string
(
htmlspecialchars
($_POST['message'])); // De même pour le message
    $message =
nl2br
($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
    // On peut enfin enregistrer :o)
mysql_query
("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $pays . "','" . $message . "')");
}
... pagination et affichage des donnees de la bdd...


Je ne sais pas trop comment faire :)


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mar Déc 11, 2007 18:32

je rajouterai quelques lignes avant d'utiliser mysql_real_escape_string. par exemple :
Code: Tout sélectionner
if (get_magic_quotes_gpc()) {  //on supprime les slash pour les magic_quote en ON
   $pseudo = stripslashes($_POST['pseudo']);
} else {
   $pseudo = $_POST['pseudo'];
}
    $pseudo =
mysql_real_escape_string
(
htmlspecialchars
($pseudo)); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité

Victor BRITO
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 423
Inscription: 21 Déc 2006

Message le Mar Déc 11, 2007 22:44

Ou alors, pour régler une fois pour toutes le problème des guillemets magiques, un fichier PHP qui est appelé à toutes les pages de ton application par include() (ou require(), si tu préfères) et qui contient le code suivant :
Code: Tout sélectionner
<?php
if (get_magic_quotes_gpc ())
{
  function noEscape ($string)
  {
    $string = is_array ($string)? array_map ('noEscape', $string): stripslashes ($string);
    return $string;
  }
  $_POST = array_map ('noEscape', $_POST);
  $_GET = array_map ('noEscape', $_GET);
  $_COOKIE = array_map ('noEscape', $_COOKIE);
  $_REQUEST = array_map ('noEscape', $_REQUEST);
}
?>

wythi
WRInaute discret
WRInaute discret
 
Messages: 140
Inscription: 20 Sep 2005

Message le Mer Déc 12, 2007 1:22

Victor BRITO a écrit:Ou alors, pour régler une fois pour toutes le problème des guillemets magiques, un fichier PHP qui est appelé à toutes les pages de ton application par include() (ou require(), si tu préfères) et qui contient le code suivant :
Code: Tout sélectionner
<?php
if (get_magic_quotes_gpc ())
{
  function noEscape ($string)
  {
    $string = is_array ($string)? array_map ('noEscape', $string): stripslashes ($string);
    return $string;
  }
  $_POST = array_map ('noEscape', $_POST);
  $_GET = array_map ('noEscape', $_GET);
  $_COOKIE = array_map ('noEscape', $_COOKIE);
  $_REQUEST = array_map ('noEscape', $_REQUEST);
}
?>


Et j'appel cette page en débu de page avent le doctype,

Ou a une place bien précise de mon code ?

wythi.

wythi
WRInaute discret
WRInaute discret
 
Messages: 140
Inscription: 20 Sep 2005

Message le Mer Déc 12, 2007 1:33

J'ai pris la solution de Victor BRITO
Sa fonctionne, j'ai inclue le script juste avent le DocType, et sa roule a fon !
Merci a tous de votre aide.

wythi.


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mer Déc 12, 2007 9:38

Victor BRITO a écrit:Ou alors, pour régler une fois pour toutes le problème des guillemets magiques, un fichier PHP qui est appelé à toutes les pages de ton application par include() (ou require(), si tu préfères) et qui contient le code suivant :
Code: Tout sélectionner
<?php
if (get_magic_quotes_gpc ())
{
  function noEscape ($string)
  {
    $string = is_array ($string)? array_map ('noEscape', $string): stripslashes ($string);
    return $string;
  }
  $_POST = array_map ('noEscape', $_POST);
  $_GET = array_map ('noEscape', $_GET);
  $_COOKIE = array_map ('noEscape', $_COOKIE);
  $_REQUEST = array_map ('noEscape', $_REQUEST);
}
?>


+ une reco. je découvre l'instruction array_map et une application très utile.

phloam
WRInaute passionné
WRInaute passionné
 
Messages: 1374
Inscription: 8 Avr 2005

Message le Jeu Déc 13, 2007 1:09

Excellent array_map je connaissais pas non plus :-) Merci


david96
WRInaute passionné
WRInaute passionné
 
Messages: 1430
Inscription: 28 Aoû 2005

Message le Jeu Déc 13, 2007 15:51

Il serait bon aussi de contrôler ton formulaire en premier temps par javascript (moins de charge) et ensuite au cas ou javascript n'est pas activé, via PHP !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité