Enregistrement en bd et mysql_real_escape_string()
14 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Enregistrement en bd et mysql_real_escape_string()
Bonjour,
J'ai un doute sur la façon d'enregistrer en bd les données de plusieurs champs ...
Suite au formulaire je fais un :
Puis j'enregistre les données en bd. Donc les quotes sont échappées par un slash.(ex:L'estacade devient L\'estacade)
Pour l'affichage, dans la boucle while,je fais un:
Tout s'affiche correctement. Sa me vire tout les slash et convertit les balises HTML.
Par contre, si le nom de la ville enregistré contient un apostrophe ( ' ) (ex:L'estacade)
et que je fais un lien du style:
et que je récupère sur la page suivante par $_GET:
pour ensuite utiliser "$la_ville" comme variable pour une recherche dans ma bd, sa ne fonctionne pas, rien ne s'affiche ... WHY ?
Merci
J'ai un doute sur la façon d'enregistrer en bd les données de plusieurs champs ...
Suite au formulaire je fais un :
- Code: Tout sélectionner
$lechamp12 = mysql_real_escape_string($_POST["ville"]);
Puis j'enregistre les données en bd. Donc les quotes sont échappées par un slash.(ex:L'estacade devient L\'estacade)
Pour l'affichage, dans la boucle while,je fais un:
- Code: Tout sélectionner
$la_ville = stripcslashes(htmlspecialchars($localisation['ville']));
Tout s'affiche correctement. Sa me vire tout les slash et convertit les balises HTML.
Par contre, si le nom de la ville enregistré contient un apostrophe ( ' ) (ex:L'estacade)
et que je fais un lien du style:
- Code: Tout sélectionner
<a href="'.$la_ville.'.php">'.$la_ville.'</a>
et que je récupère sur la page suivante par $_GET:
- Code: Tout sélectionner
$la_ville=stripcslashes(htmlspecialchars($_GET["vil"]));
pour ensuite utiliser "$la_ville" comme variable pour une recherche dans ma bd, sa ne fonctionne pas, rien ne s'affiche ... WHY ?
Merci
-

SuperCureuil - WRInaute passionné

- Messages: 662
- Inscription: Ven Mar 09, 2007 9:44
Salut,
Y'a aucune variable GET là-dedans, donc pas étonnant que tu ne la récupères pas par la suite
@+
<a href="'.$la_ville.'.php">'.$la_ville.'</a>
Y'a aucune variable GET là-dedans, donc pas étonnant que tu ne la récupères pas par la suite
- Code: Tout sélectionner
<a href="'.$la_ville.'.php?vil='.$la_ville.'">'.$la_ville.'</a>
@+
Ouhla...
Alors, petites choses en bataille:
Il est important pour éviter une erreur de type notice de tester l'existence de la variable auparavant, de cette manière:
Alors, ensuite, pas besoin de faire un stripslashes pour supprimer les backslash sur le résultat de la base de données car justement, le fait d'avoir utilisé mysql_real_escape_string permet juste d'éviter les SQL injection et n'ajoute PAS de backslash dans la base de données.
Ensuite, quand tu fais un lien $laville.php, cela modifie le nom du fichier mais ne passe rien en paramètre, normal donc de ne rien récupérer.
Il faut faire un lien du type: fichier.php?ville=$laville
Alors, petites choses en bataille:
- Code: Tout sélectionner
$lechamp12 = mysql_real_escape_string($_POST["ville"]);
Il est important pour éviter une erreur de type notice de tester l'existence de la variable auparavant, de cette manière:
- Code: Tout sélectionner
$lechamp12 = isset($_POST["ville"]) ? mysql_real_escape_string($_POST["ville"]) : '';
Alors, ensuite, pas besoin de faire un stripslashes pour supprimer les backslash sur le résultat de la base de données car justement, le fait d'avoir utilisé mysql_real_escape_string permet juste d'éviter les SQL injection et n'ajoute PAS de backslash dans la base de données.
Ensuite, quand tu fais un lien $laville.php, cela modifie le nom du fichier mais ne passe rien en paramètre, normal donc de ne rien récupérer.
Il faut faire un lien du type: fichier.php?ville=$laville
-

SuperCureuil - WRInaute passionné

- Messages: 662
- Inscription: Ven Mar 09, 2007 9:44
Alors, ensuite, pas besoin de faire un stripslashes pour supprimer les backslash sur le résultat de la base de données car justement, le fait d'avoir utilisé mysql_real_escape_string permet juste d'éviter les SQL injection et n'ajoute PAS de backslash dans la base de données.
M'semblait bien
SuperCureuil autant pour moi sur le lien, c'est parce qu'il est rewrité ^^.
Je viens de refaire le teste et chaque entré comportant un apostrophe, un backslash est insérer automatiquement dans ma bd ... d'où l'utilisation de stripcslashes .
Du coup moi pas comprendre ?
Edit: Il n'y aurai pas une histoire de magic quote activé sur mon hébergeur qui ferait que sa merde comme sa ?
...mysql_real_escape_string permet juste d'éviter les SQL injection et n'ajoute PAS de backslash dans la base de données
Je viens de refaire le teste et chaque entré comportant un apostrophe, un backslash est insérer automatiquement dans ma bd ... d'où l'utilisation de stripcslashes .
Du coup moi pas comprendre ?
Edit: Il n'y aurai pas une histoire de magic quote activé sur mon hébergeur qui ferait que sa merde comme sa ?
Oui les magic_quotes_gpc ont tendance à pourrir toutes les données en entrée.
La plupart des "frameworks" ou applications qui cherchent de la portabilité commencent par désactiver cette saloperie
Grosso modo je fais ainsi :
edit: d'ailleurs en passant, l'utilisation de PDO avec les pseudos requêtes préparées est bien sympathique pour éviter d'oublier les mysql_real_escape_string().
A moins évidement d'utiliser une classe/bibliothèque maison qui s'en charge.
La plupart des "frameworks" ou applications qui cherchent de la portabilité commencent par désactiver cette saloperie
Grosso modo je fais ainsi :
- Code: Tout sélectionner
if( ini_get('magic_quotes_gpc') ){
xxx_gpcStripWalk($_GET);
xxx_gpcStripWalk($_POST);
xxx_gpcStripWalk($_COOKIE);
xxx_gpcStripWalk($_REQUEST);
}
function xxx_gpcStripWalk( & $array )
{
foreach ( $array as $key => $item ) {
$newKey = stripslashes($key);
if ( $newKey !== $key ) {
unset( $array[ $key ] );
$array[ $newkey ] = $item;
}
if ( is_array($item) === true ) {
xxx_gpcStripWalk($array[ $newKey ]);
} else {
$array[ $newKey ] = stripslashes($item);
}
}
}
edit: d'ailleurs en passant, l'utilisation de PDO avec les pseudos requêtes préparées est bien sympathique pour éviter d'oublier les mysql_real_escape_string().
A moins évidement d'utiliser une classe/bibliothèque maison qui s'en charge.
Whaouuuuuuuuuuuuuuuuuuuuuu,merci Bool mais j'ai rien comprit
et j'ai vraiment pas le niveau requis pour l'utilisation de ton code ... tu as un décodeur stp ^^.
Il y a un truc que je ne comprend vraiment pas... il est dit quasi partout d'utiliser mysql_real_escape_string() avant l'insertion de données en bd pour ce protéger des injections
Hors si magic quotes est activé (ce qui est mon cas) et qu'on ne peut le désactiver(ce qui est encore mon cas -1&1), celui ci ajoute des backslash.
A la finale je fais comment moi pour insérer correctement mes données tout en les protègent?
En gros:
-Formulaire
-$lechamp12 = $_POST["ville"]; (<-je fais quoi ici ?)
-Vérification du formulaire
-Enregistrement en bd
Merci
Il y a un truc que je ne comprend vraiment pas... il est dit quasi partout d'utiliser mysql_real_escape_string() avant l'insertion de données en bd pour ce protéger des injections
Hors si magic quotes est activé (ce qui est mon cas) et qu'on ne peut le désactiver(ce qui est encore mon cas -1&1), celui ci ajoute des backslash.
A la finale je fais comment moi pour insérer correctement mes données tout en les protègent?
En gros:
-Formulaire
-$lechamp12 = $_POST["ville"]; (<-je fais quoi ici ?)
-Vérification du formulaire
-Enregistrement en bd
Merci
erf... désolé.
J'aurais tendance à le conseiller aussi, même si c'est parfois un peu "trop".
"Mon" code intervient justement dans ce genre de cas : exécuté au début de chaque script il annule l'effet de magic_quotes_gpc.
Il y a un truc que je ne comprend vraiment pas... il est dit quasi partout d'utiliser mysql_real_escape_string() avant l'insertion de données en bd pour ce protéger des injections
J'aurais tendance à le conseiller aussi, même si c'est parfois un peu "trop".
Hors si magic quotes est activé (ce qui est mon cas) et qu'on ne peut le désactiver(ce qui est encore mon cas -1&1), celui ci ajoute des backslash.
"Mon" code intervient justement dans ce genre de cas : exécuté au début de chaque script il annule l'effet de magic_quotes_gpc.
Re: Enregistrement en bd et mysql_real_escape_string()
Euh.... je sais pas trop si je suis d'accords sur un point:
J'ai un formulaire de saisie et pour récupérer les valeurs, je fais:
Si je rentre
Je travaille avec easyPHP 2.0.0.0
Devrais-je faire un
Et sinon, y'aurait-il une autre alternative?
J'ai un formulaire de saisie et pour récupérer les valeurs, je fais:
- Code: Tout sélectionner
$numAvs = $_SESSION['numAvs'] = mysql_real_escape_string(htmlspecialchars($_POST['numAvs']));
Si je rentre
- Code: Tout sélectionner
va'
- Code: Tout sélectionner
va\'
Je travaille avec easyPHP 2.0.0.0
Devrais-je faire un
pour supprimer les backslashes (ce qui accomplirait la tâche) mais par contre, le code serait sujet aux injections? Pourriez-vous confirmer?stripcslashes
Et sinon, y'aurait-il une autre alternative?
- Marie-Aude
- WRInaute accro

- Messages: 4920
- Inscription: Lun Juin 05, 2006 14:15
Re: Enregistrement en bd et mysql_real_escape_string()
Sinon je crois que tu peux désactiver les magic quotes en mettant un fichier php.ini à la racine de ton site sur 1&1
même en mutu
14 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Yahoo poursuit les propriétaires de 1763 noms de domaine
- Liste de sites à PageRank 10 (PR 10)
- Yahoo Web Analytics (ex IndexTools)
- Vocabulaire du référencement : noms de domaine et URL
- Passage à l'heure d'été/hiver sur un forum phpBB
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Le WRInaute du moment
Qui est en ligne
Utilisateurs parcourant ce forum: Ask Jeeves [Bot] et 0 invités





le forum