par
Power Web » 05 nov. 2007, 15:04
par contre je me suis aussi dit que pour se premunir contre les injection sql:
- limiter le nombre de carateres
- rejeter automatiquement certains caracteres (via javascript par exemple)
- verifier que la syntaxe de l'email est bonne
Salut,
Pour la limite tu peux faire ça via HTML
En changeant 30 par le nombre de caractères que tu veux
Ou PHP avec la fonction substr()
$email = substr($_POST['email'], 0, 30); // Pareil tu changes 30 par le nombre que tu veux
Pour la syntaxe de l'email tu peux utiliser une regex avec preg_match()
if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
{
// Bon email
}
else {
// Mauvais email
}
Et pour interdire les caractères je sais pas ... Mis à part les regex peut-être
Comme ça :
if(preg_match("#[ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\!\?\:\.]#i", $_POST['email']))
{
echo "Votre email ne doit pas contenir de caractères spéciaux";
}
Ou tu remplaces tout simplement les caractères spéciaux avec la fonction strtr()
Bon courage

[quote]par contre je me suis aussi dit que pour se premunir contre les injection sql:
- limiter le nombre de carateres
- rejeter automatiquement certains caracteres (via javascript par exemple)
- verifier que la syntaxe de l'email est bonne [/quote]
Salut,
Pour la limite tu peux faire ça via HTML
[code]<input type="text" name="email" maxlenght="30" />[/code]
En changeant 30 par le nombre de caractères que tu veux ;)
Ou PHP avec la fonction substr()
[php]$email = substr($_POST['email'], 0, 30); // Pareil tu changes 30 par le nombre que tu veux
[/php]
Pour la syntaxe de l'email tu peux utiliser une regex avec preg_match() :wink:
[php]
if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
{
// Bon email
}
else {
// Mauvais email
}
[/php]
Et pour interdire les caractères je sais pas ... Mis à part les regex peut-être :-k
Comme ça :
[php]
if(preg_match("#[ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\!\?\:\.]#i", $_POST['email']))
{
echo "Votre email ne doit pas contenir de caractères spéciaux";
}
[/php]
Ou tu remplaces tout simplement les caractères spéciaux avec la fonction strtr()
Bon courage :wink: