IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Limiter les caractères d'une chaine


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Limiter les caractères d'une chaine
    Alors bonsoir je cherche autoriser seulement certain caractère dans ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    $inc = 1;
    $title = "TESTEST";
    include('../header.php');
     
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
       // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
          // on teste les deux mots de passe
       	if(strlen($_POST['login']) <= "10")
       	{
       	if(!strstr($_POST['login'], "Psyche") || !strstr($_POST['login'], "Seal3") || !strstr($_POST['login'], "Yovasystem") || !strstr($_POST['login'], "Baloobal") || !strstr($_POST['login'], "Aqme") || !strstr($_POST['login'], "EDi"))
        {
          if ($_POST['pass'] != $_POST['pass_confirm']) { 
             $erreur = 'Les 2 mots de passe sont différents.'; 
          } 
          else { 
     
             // on recherche si ce login est déjà utilisé par un autre membre
             $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             $data = mysql_fetch_array($req); 
     
             if ($data[0] == 0) { 
    	            $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "50000", "'.date("d/m/Y").'", "Blablateur", "", "7", "'.$_SERVER['REMOTE_ADDR'].'", "", "","","0")'; 
    	            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	            $_SESSION['login'] = $_POST['login'];
    				?><script>document.location.href='../index.php';</script><?php
    			 } 
             else { 
                $erreur = 'Un membre possède déjà ce login.'; 
             } 
          } 
      	} else { $erreur = "Pseudo incorrecte!"; }
      } else { $erreur = "Votre pseudo est trop long!"; }
       } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }
    ?>
    Je cherche a intégrer a-z A-Z 0-9 et - et _ cependant je suis débutant en php (novice) je vous demande de l'aide si quelqu'un peux me faire mon script voici le code a intégrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $chaine = "Je suis un champ sans caracteres speciaux"; // Chaine à vérifier
    $verif = preg_match('`^[-a-zA-Z0-9_- ]{4,}$`i', $chaine); // Vérification par preg_match
    if ($verif == 1) { echo 'Je confirme, aucun caractères spéciaux.'; } // Vérification et conclusion
    else { echo 'Raté, il y a des caractères spéciaux dans cette chaine'; } // Si erreur

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et quelle est ta difficulté ?
    Tu as seulement besoin de mettre ton test à l'endroit ou tu veux.

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    astuce : pour vérifier les caractères présents (alphabet minuscules + majuscules et chiffres), il y a bien plus simple que de se taper un regex.
    PHP te fournit ce qu'il te faut nativement, l'astuce consiste juste à remplacer les 2 caractères exotiques (- et _) par une chaîne vide et de passer le tout à la moulinette de ctype_alnum():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( ! ctype_alnum(str_replace(array('-', '_'), '', $_POST['login'])))
    {
        echo 'caractères non autorisés';
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Ok petite rectification ! Je shouaterai inclure ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    if (!preg_match("#[a-z0-9_]+#", $_POST['pseudo'])) {
     
    echo '<p>Votre pseudo ne peut contenir que des lettre minuscule, des chiffre et "_".</p>';
    }
    ?>

    dans ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    $inc = 1;
    $title = "test";
    include('../header.php');
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
       // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 
          // on teste les deux mots de passe
       	if(strlen($_POST['login']) <= "10")
       	{
       	if(!strstr($_POST['login'], "x") || !strstr($_POST['login'], "xxxx") || !strstr($_POST['login'], "xxx") || !strstr($_POST['login'], "xxxxxxxx") || !strstr($_POST['login'], "xxxxxx") || !strstr($_POST['login'], "xxxxxxxxx"))
        {
          if ($_POST['pass'] != $_POST['pass_confirm']) { 
             $erreur = 'Les 2 mots de passe sont différents.'; 
          } 
          else { 
     
             // on recherche si ce login est déjà utilisé par un autre membre
             $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             $data = mysql_fetch_array($req); 
     
             if ($data[0] == 0) { 
    	            $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "50000", "'.date("d/m/Y").'", "Blablateur", "", "7", "'.$_SERVER['REMOTE_ADDR'].'", "", "","")'; 
    	            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	            $_SESSION['login'] = $_POST['login'];
    				?><script>document.location.href='../index.php';</script><?php
    			 } 
             else { 
                $erreur = 'Un membre possède déjà ce login.'; 
             } 
          } 
      	} else { $erreur = "Pseudo incorrecte!"; }
      } else { $erreur = "Votre pseudo est trop long!"; }
       } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }
    ?>

    si on pourrai me le placer directement que je voie svp et merci ou alors me dire ou et comment le placer URGENT MERCI

Discussions similaires

  1. [WD14] Extraire les caractères d'une chaine
    Par fhmayn dans le forum WinDev
    Réponses: 7
    Dernier message: 30/10/2009, 10h12
  2. prendre un a un les caractères d'une chaine
    Par _MattU_ dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/06/2008, 07h52
  3. Limiter les caractères d'une Police
    Par tom42 dans le forum Flash
    Réponses: 2
    Dernier message: 29/03/2007, 13h20
  4. Réponses: 5
    Dernier message: 02/01/2007, 15h57
  5. Réponses: 12
    Dernier message: 04/09/2006, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo