Résolu Limiter le nombre de caractères dans un champ html avec PHP ?

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Bonsoir,

J'ai un problème avec un de mes codes PHP surtout que le problème est assez important car il me retire une sécurité on va dire "importante".

Donc comme dit dans le titre j'ai un système de modifications de membre :
- Je peux modifier les crédits,points,statut,fonction ect..

- Lorsque je limite le champ par exemple entre 1 et 999 caractères cela ne marche complètement pas :/
Je peux entré en chiffre + de 999 ce que je ne veux pas :/

Voila un bout du code que j’utilise pour sécurisé cela mais qui ne marche pas apparemment :

PHP:
if(strlen($_POST['credits']) >= 0 AND strlen($_POST['credits']) <= 999)
{
    if(strlen($_POST['duckets']) >= 0 AND strlen($_POST['duckets']) <= 999)
    {
        if(strlen($_POST['points']) >= 0 AND strlen($_POST['points']) <= 999)
        {
            if(strlen($_POST['jetons']) >= 0 AND strlen($_POST['jetons']) <= 999)
            {
                if(strlen($_POST['diamants']) >= 0 AND strlen($_POST['diamants']) <= 999)
                {
                    // Ma requête..
                }
                else
                {
                    $erreur = "Le nombre de diamants doit faire entre 0 et 999 caracères !";
                }
            }
            else
            {
                $erreur = "Le nombre de jetons doit faire entre 0 et 999 caractères !";
            }
        }
        else
        {
            $erreur = "Le nombre de points doit faire entre 0 et 999 caractères !";
        }
    }
    else
    {
        $erreur = "Le nombre de duckets doit faire entre 0 et 999 caractères !";
    }
}
else
{
    $erreur = "Le nombre de crédits doit faire entre 0 et 999 caractères !";
}

Merci de votre aide en avance ^^
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 704
Réactions
8 499
Points
32 425
Bonsoir,

J'ai un problème avec un de mes codes PHP surtout que le problème est assez important car il me retire une sécurité on va dire "importante".

Donc comme dit dans le titre j'ai un système de modifications de membre :
- Je peux modifier les crédits,points,statut,fonction ect..

- Lorsque je limite le champ par exemple entre 1 et 999 caractères cela ne marche complètement pas :/
Je peux entré en chiffre + de 999 ce que je ne veux pas :/

Voila un bout du code que j’utilise pour sécurisé cela mais qui ne marche pas apparemment :

PHP:
if(strlen($_POST['credits']) >= 0 AND strlen($_POST['credits']) <= 999)
{
    if(strlen($_POST['duckets']) >= 0 AND strlen($_POST['duckets']) <= 999)
    {
        if(strlen($_POST['points']) >= 0 AND strlen($_POST['points']) <= 999)
        {
            if(strlen($_POST['jetons']) >= 0 AND strlen($_POST['jetons']) <= 999)
            {
                if(strlen($_POST['diamants']) >= 0 AND strlen($_POST['diamants']) <= 999)
                {
                    // Ma requête..
                }
                else
                {
                    $erreur = "Le nombre de diamants doit faire entre 0 et 999 caracères !";
                }
            }
            else
            {
                $erreur = "Le nombre de jetons doit faire entre 0 et 999 caractères !";
            }
        }
        else
        {
            $erreur = "Le nombre de points doit faire entre 0 et 999 caractères !";
        }
    }
    else
    {
        $erreur = "Le nombre de duckets doit faire entre 0 et 999 caractères !";
    }
}
else
{
    $erreur = "Le nombre de crédits doit faire entre 0 et 999 caractères !";
}

Merci de votre aide en avance ^^

Salut,

Tu vérifies déjà si les valeurs font moins de 1000, je vois pas exactement ce que tu veux faire :mmh:
Limiter un nombre de caractère ?
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 705
Réactions
895
Points
13 104
Bonjour :membre:,

Tu peux utiliser cette library pour tes futures validations : . :smile:

Dans ton code, je trouve cela trop sale d'imbriquer toutes les conditions de cette manière, je te conseille plutôt cette structure bien plus compréhensible :
PHP:
if(condition)
{
    //code
}

if(condition)
{
    //code
}

if(condition)
{
    //code
}

if(condition)
{
    //code
}

Concernant ta variable celle-ci va évoluer lors du déroulement de ton script, je te conseille de faire un tableau plutôt :
PHP:
$erreurs = [];

if(condition)
{
    $erreurs["Le nombre de machins ... "];
}

if(condition)
{
    $erreurs["Le nombre de trucs ... "];
}

if(condition)
{
    $erreurs["Le nombre de bidules ... "];
}

Ce tableau tu le parcourras via la fonction foreach ( ) lorsque tu devras afficher les erreurs.

Bonne journée,
Rivals
 

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Salut,

Tu vérifies déjà si les valeurs font moins de 1000, je vois pas exactement ce que tu veux faire :mmh:
Limiter un nombre de caractère ?
On peut dire sa en gros j'ai 1 input avec crédits,points ect..
Le champ est bien protégé par un minlenght et un maxlenght mais maintenant j'aimerais pouvoir renforcer par sécurité avec PHP.

En gros si dans les champs par exemple je retire maxlenght je peux entré 999999999 mais je veux limiter entre 1 et 999 caractères pas plus ^^
 

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Bonjour :membre:,

Tu peux utiliser cette library pour tes futures validations : . :smile:

Dans ton code, je trouve cela trop sale d'imbriquer toutes les conditions de cette manière, je te conseille plutôt cette structure bien plus compréhensible :
PHP:
if(condition)
{
    //code
}

if(condition)
{
    //code
}

if(condition)
{
    //code
}

if(condition)
{
    //code
}

Concernant ta variable celle-ci va évoluer lors du déroulement de ton script, je te conseille de faire un tableau plutôt :
PHP:
$erreurs = [];

if(condition)
{
    $erreurs["Le nombre de machins ... "];
}

if(condition)
{
    $erreurs["Le nombre de trucs ... "];
}

if(condition)
{
    $erreurs["Le nombre de bidules ... "];
}

Ce tableau tu le parcourras via la fonction foreach ( ) lorsque tu devras afficher les erreurs.

Bonne journée,
Rivals
D'accord je regarderais sa si sa peut m'aider ^^
Par contre if(conditon) ne répond pas a ce que je veux :p

Je souhaite simplement de vérif le nombre de chiffre mis dans le champ HTML.

Exemple de ce que je veux en PHP :
Si crédits est égal a 99 on laisse continuer la requête sinon on n'envoie un message d'erreur.
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 704
Réactions
8 499
Points
32 425
On peut dire sa en gros j'ai 1 input avec crédits,points ect..
Le champ est bien protégé par un minlenght et un maxlenght mais maintenant j'aimerais pouvoir renforcer par sécurité avec PHP.

En gros si dans les champs par exemple je retire maxlenght je peux entré 999999999 mais je veux limiter entre 1 et 999 caractères pas plus ^^

Ah ok, tu veux directement bloquer dans l'html, tu peux bloquer en Javascript, mais je te conseille de passer par le PHP et de vérifier directement si les valeurs sont correctes, suffit d'inspecter l’élément ou de déactiver le Javascript et ton code ne servira plus à rien
 

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Ah ok, tu veux directement bloquer dans l'html, tu peux bloquer en Javascript, mais je te conseille de passer par le PHP et de vérifier directement si les valeurs sont correctes, suffit d'inspecter l’élément ou de déactiver le Javascript et ton code ne servira plus à rien
Justement ses ce que je veux en PHP ^^
Mais avec strlen sa ne bloque pas dans le code tout en haut je comprend pas pourquoi ^^

ben si non tu fait comme sa

PHP:
$diamants =  htmlspecialchars(trim($_POST['diamants']));

if($diamants <= 999) {
 // si inférieur au caractere requis
}
else{
 // si supérieur au caractere requis
}
Je vais essayé et je te dit sa ^^

// Désolé du double-post :/
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 704
Réactions
8 499
Points
32 425
Le dernier tu met pas de strlen ? $_POST['diamants'] < 1000){

Nop, strlen compte le nombre de caractère, donc je vérifie si le gars a bien mis 3 caractères, (1 à 999), je vérifie si la valeur est numérique et si la valeur rentrée est strictement inférieur à 1000, mettre un strlen de 999 à $_POST['diamants'] est complétement inutile, il faudra mettre un valeur qui a plus de 999 caractères .. x)
 

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Nop, strlen compte le nombre de caractère, donc je vérifie si le gars a bien mis 3 caractères, (1 à 999), je vérifie si la valeur est numérique et si la valeur rentrée est strictement inférieur à 1000, mettre un strlen de 999 à $_POST['diamants'] est complétement inutile, il faudra mettre un valeur qui a plus de 999 caractères .. x)
D'accord ^^ je savais pas :p je vais essayé et voir ^^
 

WellKoopa

Le roi des Koopas
Premium
Inscription
17 Octobre 2014
Messages
540
Réactions
34
Points
11 630
Nop, strlen compte le nombre de caractère, donc je vérifie si le gars a bien mis 3 caractères, (1 à 999), je vérifie si la valeur est numérique et si la valeur rentrée est strictement inférieur à 1000, mettre un strlen de 999 à $_POST['diamants'] est complétement inutile, il faudra mettre un valeur qui a plus de 999 caractères .. x)
Je trouve que ses déjà un peu mieux aménager dans le code ^^
Sa fonctionne bien mais par contre ses normal que je peux mettre par exemple 1 dans le champ ? car je vois un <= 3 ses bizarre :/
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 704
Réactions
8 499
Points
32 425
Je trouve que ses déjà un peu mieux aménager dans le code ^^
Sa fonctionne bien mais par contre ses normal que je peux mettre par exemple 1 dans le champ ? car je vois un <= 3 ses bizarre :/

Oui, tu peux mettre un truc qui fait entre 0 et 3 caractères .. ^^ Tu peux mettre vérifier si le champs n'est pas vide aussi (!empty)
 
Cette réponse a aidé l'auteur de cette discussion !
Haut