Conversion caracteres speciaux HTML poru enregistrement BDD [Résolu]

payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 30 juin 2009 à 16:15 - Dernière réponse : payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention
- 1 juil. 2009 à 15:53
Bonjour !

J'ai un formulaire d'inscription sur mon site qui marche très bien, à l'exception d'un seul bug : quand on rentre une apostrophe dans un chamsp de saisie.

Donc quadn j'envoi le formulaire il me met une erreur SQL du type :
" syntaxe incorrecte vers **champs_en_question** "
Voici mes tests sur une variable :
1)
$r_adresse = $_POST["adresse"]; (variable de départ --> ERREUR)

2)
J'ai du rajouté une fonction :
{
return str_replace("'","’",$Chaine);
}
puis la variable modifiée :
$r_adresse = quoteencode($_POST["adresse"]);
Mais dans ma table j'ai "’" au lieu d'une apostrophe

et 3)
re-modification de ma variable :
$r_adresse = htmlentities(quoteencode($_POST["adresse"]));
Mais ça me met "’" au lieu d'une apostrophe.

Et je finis pas un INSERT INTO basic car je ne pense pas que le traitement se fasse à cet endroit.

Aidez-moi SVP merci bcp.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 1 juil. 2009 à 11:49
3
Merci
Bon bah j'ai trouvé ma solution que je partage au cas où quelqu'un aurait le même problème que moi :

Ma fonction dont je parlai en haut je l'ai modifiée, j'ai juste fait :

function simplequoteencode( $Chaine )
{
return str_replace("'","''",$Chaine);
}

Et dans tous les champs en POST que j'ai récupéré je fais :

$MonChamps = quoteencode($_POST["monchamps"]);

Et le tour est joué ;)

Merci pour votre réactivité ;)

@+

Merci payetonju 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de payetonju
kankrelune 1305 Messages postés mardi 9 novembre 2004Date d'inscription 21 mai 2015 Dernière intervention - 30 juin 2009 à 16:37
0
Merci
Normal les quotes sont un caractère réservé dans le langage SQL puisqu'il en fait parti... du coup ce n'est pas qu'une question de bug mais aussi et surtout de sécurité car parti comme tu es on pourrais faire sauter toute ta base de données rien qu'en s'inscrivant sur ton site... .. .

http://www.php.net/mysql_real_escape_string

et dans un 2nd temps un peu de lecture...

http://www.siteduzero.com/tutoriel-3-14668-un-site-dynamique-avec-php.html

@ tchaOo°
Commenter la réponse de kankrelune
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 30 juin 2009 à 16:45
0
Merci
Bonjour et merci d'avoir répondu si rapidement !

quel est l'equivalent de mysql_real_escape_string
en ODBC stp ?

Merci
Commenter la réponse de payetonju
kankrelune 1305 Messages postés mardi 9 novembre 2004Date d'inscription 21 mai 2015 Dernière intervention - 1 juil. 2009 à 00:36
0
Merci
Ah tu bosse avec odbc... il n'y a pas d'équivalent tout simplement parce qu'odbc n'est pas un type de base de données c'est une interface qui permet l'accés à différents type de sgdb et leur manipulation via un ensemble unique de fonctions, c'est une forme d'abstraction de bdd... ça permet de changer de type de bdd sans avoir à changer tout le code... tout dépend donc du driver sql que tu utilise mais normalement l'échappement est géré par le couple prepare()/execute()... .. .

"Et je finis pas un INSERT INTO basic car je ne pense pas que le traitement se fasse à cet endroit."

bah justement... comment tu fais ton insert "basique"... .. .

@ tchaOo°
Commenter la réponse de kankrelune
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 1 juil. 2009 à 09:15
0
Merci
Ok merci pour la petite explication.

Voici mon insert :

// ouverture base

$sql="Insert into utilisateur(LOGIN,PASSWORD,CLE,VALIDE,DATE_CREATION,NOM,PRENOM,ADRESSE,CP,VILLE,PAYS,TEL,EMAIL_PERSO) Values
('$r_login','".md5($r_pwd)."','$cle','$r_valide','$r_date','$r_nom','$r_prenom','$r_adresse','$r_codepostal','$r_ville','$r_pays','$r_tel','$r_email')";
$rs=ODBC_exec($connect,$sql);

// fermeture base
Commenter la réponse de payetonju
kankrelune 1305 Messages postés mardi 9 novembre 2004Date d'inscription 21 mai 2015 Dernière intervention - 1 juil. 2009 à 15:33
0
Merci
C'est bien ce que je pensais... c'est parce que tu fais mal ta requête que tu as un bug... il faut la préparer avant de l'exécuter... .. .

http://fr2.php.net/manual/fr/function.odbc-prepare.php

il n'y a pas que les simples quotes qui peuvent poser problème en terme d'exécution mais aussi de sécurité... .. .

@ tchaOo°
Commenter la réponse de kankrelune
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 1 juil. 2009 à 15:53
0
Merci
hello !

Merci de la prévention et du lien. Mais, jsuis peut etre bete lol, je ne comprends pas l'utilité de la fonction ODBC_prepare aec de faire mon odbc_exec

Merci
Commenter la réponse de payetonju

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.