Châine de caractère et numérique [Fermé]

Signaler
Messages postés
26
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
17 février 2019
-
Messages postés
29162
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 août 2020
-
bonjour,

J'ai créée un formulaire de contact, et je souhaite imposer un type de caractère et un nombre.

En gros, je veux que le PSEUDO soit impérativement un NOMBRE à 10 chiffres.
exemple: 1234569872 et non pas 1234 ou adss ou 123456789512

J'ai vu tout et n'importe quoi sur le net du coup si quelqu'un a une solution bien et sécurisé, je suis preneur.
Merci

<form method="post" action="index.php?p=inscription.php" id="cforum">
<fieldset>
<p><legend>Votre identité</legend></p>

<p><label for="nom">Votre nom</label>
<input name="nom" type="text" placeholder="Nom de famille..." required /></p>

<p><label for="prenom">Votre Prénom</label>
<input name="prenom" type="text" placeholder="Prénom..." required /></p>

<p><label for="datenaissance">Date de Naissance</label>
<input name="datenaissance" type="date" placeholder="Votre date de naissance..." required /></p>

<p><label for="pseudo">N° de client</label>
<input name="pseudo" type="number" placeholder="Numéro de client" required /></p>
</fieldset>

4 réponses

Messages postés
29162
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 août 2020
2 673
Bonjour,
Tu dis avoir testé des choses.... lesquelles ?

Vu ton besoin.. ceci devrait suffire
<input type="text" pattern="\d{10}" title="10 chiffres" />

"J'ai vu tout et n'importe quoi sur le net "
Pourtant cette question n'est pas rare et les réponses pléthores...
Il y a aussi la balise input type=number en définissant un maximum et un minimum

<input type="number"  min="1000000000" max="9999999999" maxlength="10"> 
pour un nombre à 10 chiffres sauf que contrairement à la solution au dessus ça autorise les valeurs décimales, il faut donc ajouter une valeur (attribut) maxlength=10 ce qui est moins élégant.
Messages postés
26
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
17 février 2019

Bonsoir,

Merci pour vos réponses. Oui, je sais qu'il existe pléthores de réponses, c'est vrai. Mais du coup je ne sais pas trop qu'elle est la meilleure solution.

A savoir que je souhaiterais qu'on me retourne une erreur quand la personne indique autre chose que 10 chiffres
Messages postés
26
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
17 février 2019

J'ai ce code là:

public function verif()
    {

        if(strlen($this->pseudo) > 5 AND strlen($this->pseudo) < 20 )
        { /*Si le pseudo est bon*/

            $syntaxe = '#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
            if(preg_match($syntaxe,$this->email))
            { /*email bon*/

                if(strlen($this->mdp) > 5 AND strlen($this->mdp) < 20 )
                    { /*Si le mot de passe à le bon format*/

                    if($this->mdp == $this->mdp2)
                        {/*Deux mots de passe bon*/
                        return 'ok';
                        }
                    else 
                        { /*Mot de passe !=*/
                        $erreur = 'Les mots de passe doivent être identique';
                        return $erreur;
                        }
                    }
                else 
                {/*Mauvais format du mot de passe*/
                $erreur = 'Le mot de passe doit contenir entre 5 et 20 caractères';
                return $erreur;
                }


            }
            else 
            { /*email mauvais*/
            $erreur = 'Syntaxe de l\'adresse email incorrect ';
            return $erreur;
            }
        }
        else 
        { /*Pseudo mauvais*/
        $erreur = 'Le pseudo doit contenir entre 5 et 20 caractères';
        return $erreur;
        }

    }


Et je veux que PSEUDO soit en 10 chiffres sinon que ça retourne une erreur.


J'ai un 2e soucis:

quand il y a une erreur, de mot de passe, par exemple, ça m'indique "Les mots de passe doiven être identique". jusqu'ici tout va bien, mais mon 2e souci est que cela m'efface tout le formulaire.
quelqu'un sait comment je peux éviter cela,

Amitié,

EDIT : Correction des balises de code pour avoir la coloration syntaxique
Messages postés
29162
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 août 2020
2 673
Ce que tu nous montres c'est du code PHP.
code qui est appellé lors du SUBMIT de ton formulaire... mais on ne sait pas à quel moment vu que tu ne nous montres pas ton code complet...

Quoi qu'il en soit, si tu as ce code.... pourquoi n'es tu pas capable de le modifier pour correspondre à tes besoins ???
Rien que pour le pseudo... il est pourtant facile de voir que ton code vérifie la longueur (ici entre 5 et 20)
if(strlen($this->pseudo) > 5 AND strlen($this->pseudo) < 20 )

Et comme tu veux

je veux que PSEUDO soit en 10 chiffres sinon que ça retourne une erreur.

c'est facile de modifier cette ligne de code pour attendre 10...

Et pour t'assurer qu'il s'agit d'un nombre.. tu peux utiliser is_numeric()
(cela ne t’empêche pas d'utiliser, en prime, le code que je t'ai donné pour ton input et ainsi avoir une vérification en amont)

Concernant ta seconde question (bien que normalement on ne pose qu'une question par discussion histoire de s'y retrouver..... ) et ben.. il suffit de réinscrire les données issues de $_POST dans tes différents champs.


Au début de ton code
//récupération PROPRE des variables AVANT de les utiliser
$nom = !empty($_POST['nom']) ? $_POST['nom'] : '';

puis dans ton formulaire :
<p><label for="nom">Votre nom</label>
<input name="nom" type="text" placeholder="Nom de famille..." required  value="<?php echo $nom; ,>"/></p>


Je t'invite fortement à lire ceci :
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Et pour poster ton code, merci de le faire correctement à l'avenir.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pour finir.. lorsque ta question concerne le PHP, merci de poster dans le bon forum.... "PHP"