par
two3d » 11 déc. 2015, 16:31
ah, désolé pour le empty, je ne savait pas, il faut dire que je l'utilise pas dans le cas de plusieurs vérif en même temps.
En ce qui concerne ton empty sur checkbox, je te conseil de ne pas le vérifier avec les autres mais de le vérifier comme tu la fait en premier, avec $checkbox = isset(....
cette ligne sert plus à rien du coup si tu fait tes vérifs simultanées, vu que tu les initialisent:
parce que oui, elle seront "isset" du coup.
Je te propose ce code propre, tu aura la possibilité de voir comment on fait (c'est ma façon de coder hein, après chacun fait différement mais la technique reste la même).
J'ai mis htmlentities à la place de htmlspecialchars, avec le paramètre ENT_QUOTES pour convertir guillemets simples et doubles afin de sécuriser l'entrée des données en BDD.
htmlentities — Convertit tous les caractères éligibles en entités HTML
Code : Tout sélectionner
if(isset($_POST['submit'])){//si le bouton submit est cliqué
if(empty($_POST['submit']) OR empty($_POST['Pseudo']) OR empty($_POST['Email']) OR empty($_POST['Password']) OR empty($_POST['RepeatPassword'])){
echo "<div class='M1'>veuillez s'il vous plaît saisir tous les champs</div>";
} else {
$Pseudo = htmlentities(trim($_POST['Pseudo']),ENT_QUOTES);
$Email = htmlentities(trim($_POST['Email']),ENT_QUOTES);
$Password = htmlentities(trim($_POST['Password']),ENT_QUOTES);
$RepeatPassword = htmlentities(trim($_POST['RepeatPassword']),ENT_QUOTES);
$Checkbox = isset($_POST['Checkbox']);
//si tu veux mettre 1 ou 0 pour le résultat du checkbox, une simple vérification binaire fera l'affaire:
//$Checkbox = isset($_POST['Checkbox'])?1:0;
if(strlen($Pseudo)<4 OR strlen($Pseudo)>10){ //si le pseudo est plus petit que 4 caractères ou plus grand que 10 caractères, on affiche un msg d'erreur (rien ne t'emp^che de mettre plus de 10 caractères possible)
echo "<div class='M1'>Votre Pseudo doit contenir minimum 4 caractères et maximum 10 caractères</div>";
} else {
if(strlen($Password)<5){
echo "<div class='M1'>Votre Mot de passse doit contenir minimum 5 caractères</div>";
} else {
if($Password != $RepeatPassword){
echo "<div class='M1'>Les mots de passes de correspondent pas !</div>";
} else {
$Password = sha1($Password);
//etc...
}
}
}
}
}
PS: il te faudra peut être mettre htmlentities($ta_variable,ENT_QUOTES,"UTF-8"); ou htmlentities($ta_variable,ENT_QUOTES,"ISO-8859-1"); pour tous, suivant l'encodage de ta page
ah, désolé pour le empty, je ne savait pas, il faut dire que je l'utilise pas dans le cas de plusieurs vérif en même temps.
En ce qui concerne ton empty sur checkbox, je te conseil de ne pas le vérifier avec les autres mais de le vérifier comme tu la fait en premier, avec $checkbox = isset(....
cette ligne sert plus à rien du coup si tu fait tes vérifs simultanées, vu que tu les initialisent:
[code]if ($Pseudo&&$Email&&$Password&&$RepeatPassword&&$Checkbox)[/code] parce que oui, elle seront "isset" du coup.
Je te propose ce code propre, tu aura la possibilité de voir comment on fait (c'est ma façon de coder hein, après chacun fait différement mais la technique reste la même).
[i]J'ai mis htmlentities à la place de htmlspecialchars, avec le paramètre ENT_QUOTES pour convertir guillemets simples et doubles afin de sécuriser l'entrée des données en BDD.
[url=http://php.net/manual/fr/function.htmlentities.php]htmlentities[/url] — Convertit tous les caractères éligibles en entités HTML[/i]
[code]if(isset($_POST['submit'])){//si le bouton submit est cliqué
if(empty($_POST['submit']) OR empty($_POST['Pseudo']) OR empty($_POST['Email']) OR empty($_POST['Password']) OR empty($_POST['RepeatPassword'])){
echo "<div class='M1'>veuillez s'il vous plaît saisir tous les champs</div>";
} else {
$Pseudo = htmlentities(trim($_POST['Pseudo']),ENT_QUOTES);
$Email = htmlentities(trim($_POST['Email']),ENT_QUOTES);
$Password = htmlentities(trim($_POST['Password']),ENT_QUOTES);
$RepeatPassword = htmlentities(trim($_POST['RepeatPassword']),ENT_QUOTES);
$Checkbox = isset($_POST['Checkbox']);
//si tu veux mettre 1 ou 0 pour le résultat du checkbox, une simple vérification binaire fera l'affaire:
//$Checkbox = isset($_POST['Checkbox'])?1:0;
if(strlen($Pseudo)<4 OR strlen($Pseudo)>10){ //si le pseudo est plus petit que 4 caractères ou plus grand que 10 caractères, on affiche un msg d'erreur (rien ne t'emp^che de mettre plus de 10 caractères possible)
echo "<div class='M1'>Votre Pseudo doit contenir minimum 4 caractères et maximum 10 caractères</div>";
} else {
if(strlen($Password)<5){
echo "<div class='M1'>Votre Mot de passse doit contenir minimum 5 caractères</div>";
} else {
if($Password != $RepeatPassword){
echo "<div class='M1'>Les mots de passes de correspondent pas !</div>";
} else {
$Password = sha1($Password);
//etc...
}
}
}
}
}[/code]
PS: il te faudra peut être mettre htmlentities($ta_variable,ENT_QUOTES,"UTF-8"); ou htmlentities($ta_variable,ENT_QUOTES,"ISO-8859-1"); pour tous, suivant l'encodage de ta page