Conversion caracteres speciaux HTML poru enregistrement BDD

Résolu
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 30 juin 2009 à 16:15
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 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.

7 réponses

payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
1 juil. 2009 à 11:49
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é ;)

@+
3
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
30 juin 2009 à 16:37
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°
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
30 juin 2009 à 16:45
Bonjour et merci d'avoir répondu si rapidement !

quel est l'equivalent de mysql_real_escape_string
en ODBC stp ?

Merci
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
1 juil. 2009 à 00:36
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°
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
1 juil. 2009 à 09:15
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
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
1 juil. 2009 à 15:33
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°
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
1 juil. 2009 à 15:53
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
0
Rejoignez-nous