[...]
Toutes les pages sont en iso-8859-15. Une fois contrôlées et validées, ces
données sont entrées dans diverses tables MySQL en UTF-8 Unicode.
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Je suis allée voir la FAQ et j'ai recherché dans les archives, ce qui m'a
amenée à cette discussion : http://tinyurl.com/y4qycc
et à la page http://www.miakinen.net/vrac/charsets/
J'ai donc essayé d'appliquer les conseils donnés :
$ok = preg_match("|^([- @!%&()/*+?;:.0-9A-Za-z]|xE2x82xAC|xC2[xA0-
xBF]|xC3[x80-xBF])*$|",$string);
Mais je me fais jeter à partir de xE2 :
Warning: preg_match(): Unknown modifier 'â'
En fait, tous les caractères codés en hexa sont rejetés.
Est-ce normal ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
[...]
Toutes les pages sont en iso-8859-15. Une fois contrôlées et validées, ces
données sont entrées dans diverses tables MySQL en UTF-8 Unicode.
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Je suis allée voir la FAQ et j'ai recherché dans les archives, ce qui m'a
amenée à cette discussion : http://tinyurl.com/y4qycc
et à la page http://www.miakinen.net/vrac/charsets/
J'ai donc essayé d'appliquer les conseils donnés :
$ok = preg_match("|^([- @!%&()/*+?;:.0-9A-Za-z]|xE2x82xAC|xC2[xA0-
xBF]|xC3[x80-xBF])*$|",$string);
Mais je me fais jeter à partir de xE2 :
Warning: preg_match(): Unknown modifier 'â'
En fait, tous les caractères codés en hexa sont rejetés.
Est-ce normal ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
[...]
Toutes les pages sont en iso-8859-15. Une fois contrôlées et validées, ces
données sont entrées dans diverses tables MySQL en UTF-8 Unicode.
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Je suis allée voir la FAQ et j'ai recherché dans les archives, ce qui m'a
amenée à cette discussion : http://tinyurl.com/y4qycc
et à la page http://www.miakinen.net/vrac/charsets/
J'ai donc essayé d'appliquer les conseils donnés :
$ok = preg_match("|^([- @!%&()/*+?;:.0-9A-Za-z]|xE2x82xAC|xC2[xA0-
xBF]|xC3[x80-xBF])*$|",$string);
Mais je me fais jeter à partir de xE2 :
Warning: preg_match(): Unknown modifier 'â'
En fait, tous les caractères codés en hexa sont rejetés.
Est-ce normal ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
Comment faut-il faire le test pour autoriser presque tout (sauf ce qui
pourrait être dangereux) :
- les caractères alphanumériques, y compris accentués, minuscules et
majuscules, cédilles en minuscule et majuscule
- les signes de ponctuation, apostrophes comprises, et si possible les
guillemets doubles
- quelques caractères spéciaux : &,@,/, symboles monétaires, parenthèses,
crochets, vrais guillements «», espaces insécables, si possible les ½, æ...
Bref, faut-il/peut-on les lister directement les caractères et écrire par
exemple (j'abrège) :
$masque="^([- @!%&()/*+?;:._&'"0-9A-Za-zéèêëçÇàâäùÉÈÊË])*$";
Ou y a-t-il un moyen plus adapté, plus pratique ?
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou par
ignorance, puisse entrer des données dangereuses...
Si tu n'avais pas besoin des ' et " j'aurais proposé :
"|^[] !$&(),./0-9:;?@A-Z[a-zxA0-xFF-]*$|"
Note à quel endroit j'ai mis le ] (au début pour qu'il ne ferme pas la
syntaxe [...]) et le - (à la fin pour que ce ne soit pas une série de
caractères consécutifs).
Mais puisque tu en as besoin, je dirais :
"/^[x20-x7ExA0-xFF]*$/"
... avec un traitement particulier pour les ' et ".
Si tu n'avais pas besoin des ' et " j'aurais proposé :
"|^[] !$&(),./0-9:;?@A-Z[a-zxA0-xFF-]*$|"
Note à quel endroit j'ai mis le ] (au début pour qu'il ne ferme pas la
syntaxe [...]) et le - (à la fin pour que ce ne soit pas une série de
caractères consécutifs).
Mais puisque tu en as besoin, je dirais :
"/^[x20-x7ExA0-xFF]*$/"
... avec un traitement particulier pour les ' et ".
Si tu n'avais pas besoin des ' et " j'aurais proposé :
"|^[] !$&(),./0-9:;?@A-Z[a-zxA0-xFF-]*$|"
Note à quel endroit j'ai mis le ] (au début pour qu'il ne ferme pas la
syntaxe [...]) et le - (à la fin pour que ce ne soit pas une série de
caractères consécutifs).
Mais puisque tu en as besoin, je dirais :
"/^[x20-x7ExA0-xFF]*$/"
... avec un traitement particulier pour les ' et ".
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou
par ignorance, puisse entrer des données dangereuses...
C'est pas ton boulot mais celui de mysql_real_escape_string de faire
ca il me semble (ou alors j'ai loupé la motivation)
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou
par ignorance, puisse entrer des données dangereuses...
C'est pas ton boulot mais celui de mysql_real_escape_string de faire
ca il me semble (ou alors j'ai loupé la motivation)
Évidemment, faudrait pas qu'un utilisateur, par volonté de nuire ou
par ignorance, puisse entrer des données dangereuses...
C'est pas ton boulot mais celui de mysql_real_escape_string de faire
ca il me semble (ou alors j'ai loupé la motivation)
Il suffirait donc d'utiliser cette fonction au
moment de l'insertion ou de la modification de données dans les tables SQL
pour se débarrasser des problèmes de ' et de " ?
Au juste, quels sont les caractères dangereux, ceux qu'ils faut interdire
dans un formulaire ? < et >, il me semble... et quoi d'autre ?
Est-ce vraiment une mauvaise idée d'interdire certains caractères plutôt que de
lister ceux qui sont autorisés
Il suffirait donc d'utiliser cette fonction au
moment de l'insertion ou de la modification de données dans les tables SQL
pour se débarrasser des problèmes de ' et de " ?
Au juste, quels sont les caractères dangereux, ceux qu'ils faut interdire
dans un formulaire ? < et >, il me semble... et quoi d'autre ?
Est-ce vraiment une mauvaise idée d'interdire certains caractères plutôt que de
lister ceux qui sont autorisés
Il suffirait donc d'utiliser cette fonction au
moment de l'insertion ou de la modification de données dans les tables SQL
pour se débarrasser des problèmes de ' et de " ?
Au juste, quels sont les caractères dangereux, ceux qu'ils faut interdire
dans un formulaire ? < et >, il me semble... et quoi d'autre ?
Est-ce vraiment une mauvaise idée d'interdire certains caractères plutôt que de
lister ceux qui sont autorisés
Moralité : bien se poser la question de l'intérêt réel de s'emmerder à
jouer avec utf-8 au lieu de rester en charset usuel. D'ailleurs, et-ce
même logique ? A quoi servent les entités html comme é ou à
? N'oublions pas que HTML fonctionne parfaitement ***en ASCII 7 BITS !***
C'est **FAIT POUR**.
Moralité : bien se poser la question de l'intérêt réel de s'emmerder à
jouer avec utf-8 au lieu de rester en charset usuel. D'ailleurs, et-ce
même logique ? A quoi servent les entités html comme é ou à
? N'oublions pas que HTML fonctionne parfaitement ***en ASCII 7 BITS !***
C'est **FAIT POUR**.
Moralité : bien se poser la question de l'intérêt réel de s'emmerder à
jouer avec utf-8 au lieu de rester en charset usuel. D'ailleurs, et-ce
même logique ? A quoi servent les entités html comme é ou à
? N'oublions pas que HTML fonctionne parfaitement ***en ASCII 7 BITS !***
C'est **FAIT POUR**.
Nos pages sont en ISO 8859-15
Alors arrêtez de vous emmerder avec de l'utf-8.
mais à ma connaissance, chez notre hébergeur,
les tables sont en UTF8
... quoique, je lis : Interclassement : latin1_swedish_ci
essayé de le changer et déclenché je ne sais plus quelle cata). Il n'est
pas exclu que je confonde tout et n'importe quoi,
mais dans ces histoires de charsets, une chatte n'y retrouverait pas ses
petits.
Meow.
Nos pages sont en ISO 8859-15
Alors arrêtez de vous emmerder avec de l'utf-8.
mais à ma connaissance, chez notre hébergeur,
les tables sont en UTF8
... quoique, je lis : Interclassement : latin1_swedish_ci
essayé de le changer et déclenché je ne sais plus quelle cata). Il n'est
pas exclu que je confonde tout et n'importe quoi,
mais dans ces histoires de charsets, une chatte n'y retrouverait pas ses
petits.
Meow.
Nos pages sont en ISO 8859-15
Alors arrêtez de vous emmerder avec de l'utf-8.
mais à ma connaissance, chez notre hébergeur,
les tables sont en UTF8
... quoique, je lis : Interclassement : latin1_swedish_ci
essayé de le changer et déclenché je ne sais plus quelle cata). Il n'est
pas exclu que je confonde tout et n'importe quoi,
mais dans ces histoires de charsets, une chatte n'y retrouverait pas ses
petits.
Meow.
Meow.
Vu le bazar que ça met, j'irai même jusqu'à dire qu'une mère truie n'y
retrouverait pas ses petits gorets non plus.
Meow.
Vu le bazar que ça met, j'irai même jusqu'à dire qu'une mère truie n'y
retrouverait pas ses petits gorets non plus.
Meow.
Vu le bazar que ça met, j'irai même jusqu'à dire qu'une mère truie n'y
retrouverait pas ses petits gorets non plus.
J'ai un beau formulaire à moi, avec de beaux champs en input type="text"
name="nom" etc.
Oui mais la cause est dans le etc. Il y a aussi VALUE
C'est mon "gros" chien Rocky
Et là, horreur et malédiction, je lis : C'est mon . Tout ce qui est à
partir du " a disparu corps et bien.
Par contre, si je remplace dans le formulaire mon input type="text" par un
textarea name="nom", je peux mettre tous les guillemets que je veux, je
n'ai plus de problème d'affichage
Logique, car alors le nom n'est plus dans un attribut entouré de ".
en plus, j'aimerais comprendre pourquoi le fait de changer le type
d'élément de formulaire change quelque chose à la prise en charge des
guillemets.
J'ai un beau formulaire à moi, avec de beaux champs en input type="text"
name="nom" etc.
Oui mais la cause est dans le etc. Il y a aussi VALUE
C'est mon "gros" chien Rocky
Et là, horreur et malédiction, je lis : C'est mon . Tout ce qui est à
partir du " a disparu corps et bien.
Par contre, si je remplace dans le formulaire mon input type="text" par un
textarea name="nom", je peux mettre tous les guillemets que je veux, je
n'ai plus de problème d'affichage
Logique, car alors le nom n'est plus dans un attribut entouré de ".
en plus, j'aimerais comprendre pourquoi le fait de changer le type
d'élément de formulaire change quelque chose à la prise en charge des
guillemets.
J'ai un beau formulaire à moi, avec de beaux champs en input type="text"
name="nom" etc.
Oui mais la cause est dans le etc. Il y a aussi VALUE
C'est mon "gros" chien Rocky
Et là, horreur et malédiction, je lis : C'est mon . Tout ce qui est à
partir du " a disparu corps et bien.
Par contre, si je remplace dans le formulaire mon input type="text" par un
textarea name="nom", je peux mettre tous les guillemets que je veux, je
n'ai plus de problème d'affichage
Logique, car alors le nom n'est plus dans un attribut entouré de ".
en plus, j'aimerais comprendre pourquoi le fait de changer le type
d'élément de formulaire change quelque chose à la prise en charge des
guillemets.