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

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
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

Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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é ;)

@+
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
Bonjour et merci d'avoir répondu si rapidement !

quel est l'equivalent de mysql_real_escape_string
en ODBC stp ?

Merci
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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