[Résolue] Autre solution que le htmlspecialchars ?

WRInaute discret
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.
 
WRInaute passionné
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:
if (!get_magic_quotes_gpc()) {  //on rajoute des slash pour les magic_quote en OFF
	$unevariable = addslashes($_GET['unevariable']);
} else {
	$unevariable = $_GET['unevariable'];
}
 
WRInaute discret
Bonjours a tous,
merci de vos réponsses, voici la partie avec le "htmlspecialchars" :
Code:
... 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 :)
 
WRInaute passionné
je rajouterai quelques lignes avant d'utiliser mysql_real_escape_string. par exemple :
Code:
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é
 
WRInaute occasionnel
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:
<?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);
}
?>
 
WRInaute discret
Victor BRITO a dit:
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:
<?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.
 
WRInaute discret
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.
 
WRInaute passionné
Victor BRITO a dit:
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:
<?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.
 
WRInaute passionné
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 !
 
Discussions similaires
Haut