Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des ","
dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL:
$SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Si $_POST['adresse'] = "6, rue blabla" cela donne la requete SQL suivante :
$SQL="INSERT INTO tb_user ('','moi','6, rue blabla')";
La "," aprés le 6 cause une erreur de requete.
Existe t il un moyen simple pour accepter les "," dans un champ SQL,
mis à part un str_replace(","," ",$_POST['adresse'])
"laurent sturm" a écrit dans le message de news:429b26af$0$6860$
Bonjour,
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Si $_POST['adresse'] = "6, rue blabla" cela donne la requete SQL suivante :
$SQL="INSERT INTO tb_user ('','moi','6, rue blabla')"; La "," aprés le 6 cause une erreur de requete.
Existe t il un moyen simple pour accepter les "," dans un champ SQL, mis à part un str_replace(","," ",$_POST['adresse'])
Merci
Damien
(snip)
Si $_POST['adresse'] = "6, rue blabla" cela donne la requete SQL suivante : $SQL="INSERT INTO tb_user ('','moi','6, rue blabla')"; La "," aprés le 6 cause une erreur de requete. (snip)
Quelle erreur exactement ? Chez moi une requête d'insertion complète n'en génère pas :
INSERT INTO tb_user VALUES ('','moi','6, rue blabla')
ou
INSERT INTO tb_user (clef, champnom,champadresse) VALUES ('','moi','6, rue blabla')
Il manque le "values" dans la tienne.
MYSQL n'interprète pas, à mon sens, la virgule comme séparateur de champ à partir du moment où il est en train de lire une chaine.
Là où il y a problème potentiel, c'est avec les quotes... Pour ça, il y a addslashes() qui "échappe" les quotes ( ' => ' ).
HTH, -- Damien
(snip)
Si $_POST['adresse'] = "6, rue blabla" cela donne la requete SQL suivante :
$SQL="INSERT INTO tb_user ('','moi','6, rue blabla')";
La "," aprés le 6 cause une erreur de requete.
(snip)
Quelle erreur exactement ? Chez moi une requête d'insertion complète
n'en génère pas :
INSERT INTO tb_user VALUES ('','moi','6, rue blabla')
ou
INSERT INTO tb_user (clef, champnom,champadresse) VALUES ('','moi','6,
rue blabla')
Il manque le "values" dans la tienne.
MYSQL n'interprète pas, à mon sens, la virgule comme séparateur de champ
à partir du moment où il est en train de lire une chaine.
Là où il y a problème potentiel, c'est avec les quotes... Pour ça, il y
a addslashes() qui "échappe" les quotes ( ' => ' ).
Si $_POST['adresse'] = "6, rue blabla" cela donne la requete SQL suivante : $SQL="INSERT INTO tb_user ('','moi','6, rue blabla')"; La "," aprés le 6 cause une erreur de requete. (snip)
Quelle erreur exactement ? Chez moi une requête d'insertion complète n'en génère pas :
INSERT INTO tb_user VALUES ('','moi','6, rue blabla')
ou
INSERT INTO tb_user (clef, champnom,champadresse) VALUES ('','moi','6, rue blabla')
Il manque le "values" dans la tienne.
MYSQL n'interprète pas, à mon sens, la virgule comme séparateur de champ à partir du moment où il est en train de lire une chaine.
Là où il y a problème potentiel, c'est avec les quotes... Pour ça, il y a addslashes() qui "échappe" les quotes ( ' => ' ).
HTH, -- Damien
ftc
Bonjour,
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou mysql_real_escape_string, pour les commandes on a escapeshellarg ou escapeshellcmd ...
Bonjour,
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des ","
dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL:
$SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET
ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une
commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères
dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou
mysql_real_escape_string, pour les commandes on a escapeshellarg ou
escapeshellcmd ...
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou mysql_real_escape_string, pour les commandes on a escapeshellarg ou escapeshellcmd ...
Michel Gaudry
ftc wrote:
Bonjour,
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou mysql_real_escape_string, pour les commandes on a escapeshellarg ou escapeshellcmd ...
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
ftc wrote:
Bonjour,
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des
"," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL:
$SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET
ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une
commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères
dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou
mysql_real_escape_string, pour les commandes on a escapeshellarg ou
escapeshellcmd ...
Dans un autre sens, si je souhaite afficher sur ma page web le contenu
d'un champ qui a été, avant son intertion, traité par
mysql_escape_string, comment faire pour que le navigateur n'affiche pas
du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ?
Existe-t-il un fonction pour cela ou alors faut il simplement enlever
tous les "" avec un /while/ ?
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Pour une requête MySQL, on a mysql_escape_string ou mysql_real_escape_string, pour les commandes on a escapeshellarg ou escapeshellcmd ...
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
CrazyCat
Michel Gaudry wrote:
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
Michel Gaudry wrote:
Dans un autre sens, si je souhaite afficher sur ma page web le contenu
d'un champ qui a été, avant son intertion, traité par
mysql_escape_string, comment faire pour que le navigateur n'affiche pas
du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ?
Existe-t-il un fonction pour cela ou alors faut il simplement enlever
tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand
bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.crazy-irc.net
ftc
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Normalement les données récupérées ne doivent pas contenir de ' ou autre. S'ils y sont, ça veut dire qu'il y a eu un mécanisme qui a échappé les données une seconde fois (magic quotes en général).
cette fonction sera appelée avant chaque insertion de données.
Maintenant, s'il y a déjà des données dans la base qui ont des ', il faut utiliser la fonction stripslashes.
Dans un autre sens, si je souhaite afficher sur ma page web le contenu
d'un champ qui a été, avant son intertion, traité par
mysql_escape_string, comment faire pour que le navigateur n'affiche pas
du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ?
Existe-t-il un fonction pour cela ou alors faut il simplement enlever
tous les "" avec un /while/ ?
Normalement les données récupérées ne doivent pas contenir de ' ou
autre. S'ils y sont, ça veut dire qu'il y a eu un mécanisme qui a
échappé les données une seconde fois (magic quotes en général).
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Normalement les données récupérées ne doivent pas contenir de ' ou autre. S'ils y sont, ça veut dire qu'il y a eu un mécanisme qui a échappé les données une seconde fois (magic quotes en général).
cette fonction sera appelée avant chaque insertion de données.
Maintenant, s'il y a déjà des données dans la base qui ont des ', il faut utiliser la fonction stripslashes.
Patrick Mevzek
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Cela ne suffit pas/n'est pas complétement approprié.
On peut faire une injection SQL sans utiliser le '
Exemple avec la requête SQL: SELECT * FROM whatever WHERE id=$_POST[id]
il suffit d'envoyer dans $_POST[id]: 0 OR 1 pour élargir grandement la restriction initiale.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des
"," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL:
$SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET
ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une
commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères
dangereux ).
Cela ne suffit pas/n'est pas complétement approprié.
On peut faire une injection SQL sans utiliser le '
Exemple avec la requête SQL:
SELECT * FROM whatever WHERE id=$_POST[id]
il suffit d'envoyer dans $_POST[id]:
0 OR 1
pour élargir grandement la restriction initiale.
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Lorsque un utilisateur s'inscrit sur mon site, et qu'il a saisie des "," dans son adresse (ou autre champ), cela cause une erreur SQL.
exemple de requete SQL: $SQL="INSERT INTO tb_user ('','$_POST[nom]','$_POST['adresse']')";
Ne jamais utiliser des variables provenant directement de $_POST, $_GET ou $_REQUEST dans des instructons sql ou lorsqu'on fait appel à une commande externe.
Il faut toujours 'blanchir' la variable ( lui rétirer les caractères dangereux ).
Cela ne suffit pas/n'est pas complétement approprié.
On peut faire une injection SQL sans utiliser le '
Exemple avec la requête SQL: SELECT * FROM whatever WHERE id=$_POST[id]
il suffit d'envoyer dans $_POST[id]: 0 OR 1 pour élargir grandement la restriction initiale.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Guillaume Bouchard
Michel Gaudry wrote:
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
J'avais (mal ?) écrit un article il y a quelques siécles de cela.
Dans un autre sens, si je souhaite afficher sur ma page web le contenu
d'un champ qui a été, avant son intertion, traité par
mysql_escape_string, comment faire pour que le navigateur n'affiche pas
du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ?
Existe-t-il un fonction pour cela ou alors faut il simplement enlever
tous les "" avec un /while/ ?
J'avais (mal ?) écrit un article il y a quelques siécles de cela.
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
J'avais (mal ?) écrit un article il y a quelques siécles de cela.
Cela ne suffit pas/n'est pas complétement approprié.
On peut faire une injection SQL sans utiliser le '
Exemple avec la requête SQL: SELECT * FROM whatever WHERE id=$_POST[id]
il suffit d'envoyer dans $_POST[id]: 0 OR 1 pour élargir grandement la restriction initiale.
$query = 'SELECT * FROM table WHERE id=''.mysql_real_escape_string( $_POST['password'] ).''';
Nécessaire et suffisant.
Michel Gaudry
Michel Gaudry wrote:
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php
Merci, même si c'était dur.
Michel Gaudry wrote:
Dans un autre sens, si je souhaite afficher sur ma page web le contenu
d'un champ qui a été, avant son intertion, traité par
mysql_escape_string, comment faire pour que le navigateur n'affiche
pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ?
Existe-t-il un fonction pour cela ou alors faut il simplement enlever
tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand
bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php
Dans un autre sens, si je souhaite afficher sur ma page web le contenu d'un champ qui a été, avant son intertion, traité par mysql_escape_string, comment faire pour que le navigateur n'affiche pas du texte dans le genre "J' ai bien mangé, et j'ai bien bu" ? Existe-t-il un fonction pour cela ou alors faut il simplement enlever tous les "" avec un /while/ ?
Au risque d'être malpoli, RTFM.
Les fonctions addslashes() et stripslashes() sont la pour le plus grand bonheur de tous.
Plus d'infos sur http://fr3.php.net/manual/fr/function.stripslashes.php