PhP restriction des caracteres d'un champ
Résolu
ced3E
Messages postés
101
Date d'inscription
Statut
Membre
Dernière intervention
-
ced3E Messages postés 101 Date d'inscription Statut Membre Dernière intervention -
ced3E Messages postés 101 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- PhP restriction des caracteres d'un champ
- Caractères ascii - Guide
- Restriction instagram - Guide
- Caractères spéciaux - Guide
- Easy php - Télécharger - Divers Web & Internet
- Caractères spéciaux mac - Guide
9 réponses
Salut.
Pour éviter les injections SQL, il suffit d'utiliser mysql_real_escape_string().
Ou si tu utilises PDO : $objetPDO->quote($variable)
Pour éviter les injections de codes (Javascript, CSS, HTML - la faille XSS) : il faut utiliser htmlspecialchars (je l'utilise à l'écriture, pas à l'enregistrement : ça n'a aucun effet dans la base de données)
Pour limiter les caractères des prénoms, tu dois utiliser les expressions régulières (regular expression - regex)
Pour éviter les injections SQL, il suffit d'utiliser mysql_real_escape_string().
Ou si tu utilises PDO : $objetPDO->quote($variable)
Pour éviter les injections de codes (Javascript, CSS, HTML - la faille XSS) : il faut utiliser htmlspecialchars (je l'utilise à l'écriture, pas à l'enregistrement : ça n'a aucun effet dans la base de données)
Pour limiter les caractères des prénoms, tu dois utiliser les expressions régulières (regular expression - regex)
preg_match('#^[a-zA-Z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]$#', $prenom)
Merci aprés documentation sur le sujet j' ai lu tout ça je vais voir pour le mettre en application. est il utile de le mettre sur chaque champ ? Car par exemple il sera dur d' injecté un code avec la condition d' avoir @ . comme " if(!filter_var($email1, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'L\'adresse email est non invalide';
} "
J' ai un petit problème pour couplé les conditions,
if (preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]$#', $Nomdefamille) && (strlen($Nomdefamille) < 3) && (strlen($Nomdefamille) >= 15) {
$errors[] = 'Le Nom de famille non valide';
}
Ca marche pas
$errors[] = 'L\'adresse email est non invalide';
} "
J' ai un petit problème pour couplé les conditions,
if (preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]$#', $Nomdefamille) && (strlen($Nomdefamille) < 3) && (strlen($Nomdefamille) >= 15) {
$errors[] = 'Le Nom de famille non valide';
}
Ca marche pas
moi je serais tenté de remplacer le preg_match de ced3E par celui la :
!preg_match('#[a-z|0-9|ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+#i', $nomdefamille)
!preg_match('#[a-z|0-9|ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+#i', $nomdefamille)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon j ' ai testé ça ne marche pas un petit remix a ma sauce qui ne marche pas non plus je suis un peu perdu la ^^
L 'objectif sécuriser le formulaire au maximum contre l' injection de code ou autre . . .
Alors voila comment je comprend les chausses :
-le champ mail est sécurisé par le fais qu on est obliger d' utiliser @ non ?
-Les champ Prénom, nom par la restriction de 15 caractères et l' obligation d' utilisé des lettres ( c' est en cours . . . )
-La vérification du mail par le champ mail
mais sur le mot de passe je sèche un peu a par la restriction de 15 caractères que faire ? ^^ htmlspecialchars suffi ?
Voila mon code php complet si vous avez des remarques a faire je débute :
<?php
$Prenom = isset($_POST['Prenom']) ? trim($_POST['Prenom']) : '';
$Nomdefamille = isset($_POST['Nomdefamille']) ? trim($_POST['Nomdefamille']) : '';
$Votremotdepasse = isset($_POST['Votremotdepasse']) ? trim($_POST['Votremotdepasse']) : '';
$email1 = isset($_POST['email1']) ? $_POST['email1'] : '';
$email2 = isset($_POST['email2']) ? $_POST['email2'] : '';
$errors = array();
if (isset($_POST["checkbox"]) == "" ) {
$errors[] = 'La casse des Conditions d\'utilisation non cochée';
}
if (strlen($Prenom) < 3) {
$errors[] = 'Le prénom doit contenir au moins 3 caractères';
}
if (strlen($Prenom) > 15) {
$errors[] = 'Le prénom ne doit pas contenir plus de 15 caractères';
}
if (strlen($Nomdefamille) < 3) {
$errors[] = 'Le nom de famille doit contenir au moins 3 caractères';
}
$lettre = "/[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]/";
if (!preg_match($lettre, $Nomdefamille))
{
$errors[] = 'okkkkkkk';
}
if (strlen($Nomdefamille) > 15) {
$errors[] = 'Le nom doit ne doit pas contenir plus de 15 caractères';
}
if (strlen($Votremotdepasse) < 3) {
$errors[] = 'Votre mot de passe doit contenir au moins 3 caractères';
}
if (strlen($Votremotdepasse) > 15) {
$errors[] = 'Votre mot de passe doit pas contenir plus de 15 caractères';
}
if(!filter_var($email1, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'L\'adresse email est non invalide';
}
if($email1 !== $email2) {
$errors[] = 'Les adresses emails entrées ne correspondent pas';
}
if(count($errors) > 0) {
echo '<div class="errors">';
echo 'Il y a '.count($errors).' erreur(s) :<br/>';
foreach($errors as $error) {
echo '- '.$error.'<br/>';
}
echo '</div>';
} else
?>
Merci a vous et bonne année :)
L 'objectif sécuriser le formulaire au maximum contre l' injection de code ou autre . . .
Alors voila comment je comprend les chausses :
-le champ mail est sécurisé par le fais qu on est obliger d' utiliser @ non ?
-Les champ Prénom, nom par la restriction de 15 caractères et l' obligation d' utilisé des lettres ( c' est en cours . . . )
-La vérification du mail par le champ mail
mais sur le mot de passe je sèche un peu a par la restriction de 15 caractères que faire ? ^^ htmlspecialchars suffi ?
Voila mon code php complet si vous avez des remarques a faire je débute :
<?php
$Prenom = isset($_POST['Prenom']) ? trim($_POST['Prenom']) : '';
$Nomdefamille = isset($_POST['Nomdefamille']) ? trim($_POST['Nomdefamille']) : '';
$Votremotdepasse = isset($_POST['Votremotdepasse']) ? trim($_POST['Votremotdepasse']) : '';
$email1 = isset($_POST['email1']) ? $_POST['email1'] : '';
$email2 = isset($_POST['email2']) ? $_POST['email2'] : '';
$errors = array();
if (isset($_POST["checkbox"]) == "" ) {
$errors[] = 'La casse des Conditions d\'utilisation non cochée';
}
if (strlen($Prenom) < 3) {
$errors[] = 'Le prénom doit contenir au moins 3 caractères';
}
if (strlen($Prenom) > 15) {
$errors[] = 'Le prénom ne doit pas contenir plus de 15 caractères';
}
if (strlen($Nomdefamille) < 3) {
$errors[] = 'Le nom de famille doit contenir au moins 3 caractères';
}
$lettre = "/[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]/";
if (!preg_match($lettre, $Nomdefamille))
{
$errors[] = 'okkkkkkk';
}
if (strlen($Nomdefamille) > 15) {
$errors[] = 'Le nom doit ne doit pas contenir plus de 15 caractères';
}
if (strlen($Votremotdepasse) < 3) {
$errors[] = 'Votre mot de passe doit contenir au moins 3 caractères';
}
if (strlen($Votremotdepasse) > 15) {
$errors[] = 'Votre mot de passe doit pas contenir plus de 15 caractères';
}
if(!filter_var($email1, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'L\'adresse email est non invalide';
}
if($email1 !== $email2) {
$errors[] = 'Les adresses emails entrées ne correspondent pas';
}
if(count($errors) > 0) {
echo '<div class="errors">';
echo 'Il y a '.count($errors).' erreur(s) :<br/>';
foreach($errors as $error) {
echo '- '.$error.'<br/>';
}
echo '</div>';
} else
?>
Merci a vous et bonne année :)
pour securiser ton code : tu peux faire: mysql_real_escape_string()
EX:
$prenom = mysql_real_escape($_POST['prenom']),
pour les mots de passes tu les passes dans la fonction md5()
EX:
$prenom = mysql_real_escape($_POST['prenom']),
pour les mots de passes tu les passes dans la fonction md5()
hummm comment s applique la fonction md5 ?
Pour se qui est des champ prénom nom pour quoi pas en plus de la restriction des caractères que je n arrive toujours pas a mettre en place :(
Pour se qui est des champ prénom nom pour quoi pas en plus de la restriction des caractères que je n arrive toujours pas a mettre en place :(
J'ai oublié le + après les crochets pour indiquer que le caractère doit y être une fois ou plus.
Et dans les crochets, tu peux ajouter \s (avant le tiret) pour autoriser les espaces.
Pour la fonction md5(), elle est à utiliser sur la variable avant l'insertion dans la base de données. Tu n'as pas besoin de sécuriser cette variable avec mysql_real_escape_string. Pour la connexion du membre, il faudra utiliser md5() sur la variable POST contenant le formulaire avant de faire la comparaison.
Et dans les crochets, tu peux ajouter \s (avant le tiret) pour autoriser les espaces.
Pour la fonction md5(), elle est à utiliser sur la variable avant l'insertion dans la base de données. Tu n'as pas besoin de sécuriser cette variable avec mysql_real_escape_string. Pour la connexion du membre, il faudra utiliser md5() sur la variable POST contenant le formulaire avant de faire la comparaison.