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 :

Incrémentation unique Oo


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut Incrémentation unique Oo
    Bonjour,

    Voila mon problème : J'ai un formulaire en 2 partie. La première demande un login, et envoi ce login par une variable session a la seconde page. Cette seconde page, elle, demande un mot de passe. Au bout de 3 tentatives, une requette a lieu pour bloquer le compte.
    Donc, la première page marche, c'est la seconde qui ne vas pas. Le problème réside dans l'incrémentation de la variable "$tentative" qui compte le nombre de tentative faite par l'utilisateur. Voici le code en abrégé

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?php
    if(isset($_SESSION['user'])){
        $tentative = 1;
        $message = "Tentative 1/3";
        if(isset($_POST['pass'])){ // ... on verifit qu'on a aussi remplit la champ "pass"
              // [...]
              if($verif == 1){ // en gros, j'ai précédament fait une requette qui vérifit si le compte existe et que c'est les bons log
                      // on se connecte et tt le bazar...
              }
              else{ // mauvais mot de passe puisque cette partie ne traite que le mot de passe et pas le login qui a été entré précédament...
                            $tentative++;
                            if($tentative < 4){
                                $message = "Tentative ".$tentative."/3<br>Mot de passe incorrect !"; // On l'informe
                            }
                            else{
                                // requette qui bloque le compte
                                $message = "Compte bloqué !";
                            }
             }
        }
    ?>
    <!-- le formulaire si nous n'avons pas de mot de passe ($_POST['pass']) -->
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <form action="" method="post">
    <h2>Partie 2/2 :</h2>
    <?php
    if(isset($message)){ // Si il existe une varriable message
    	echo "<br><br><span class=\"imp\" style=\"margin: 50px 0;\">$message</span><br><br><br><br>"; // On l'affiche
    }
    ?>
    <table style="text-align: center; width: 300px;">
    	<tr>
    		<td>Pass :</td>
    		<td><input type="password" name="pass" <?php if($tentative == 3){ echo "disabled=\"disabled\"";} ?>></td>
    	</tr>
    	<tr>
    		<td colspan="2" align="center"><input type="submit" value="Entrer !" <?php if($tentative == 3){ echo "disabled=\"disabled\"";} ?>></td>
    	</tr>
    </table>
    <?php
    if($tentative == 3){ // si c'est la 3éme tentative, on bloque les input (voir ci dessus) et on affiche un lien retour a l'index
        echo "<h2 align=\"center\"><a href=\"/\">Retour à l'acceuil du site</a></h2>";
    }
    ?>
    </form>
    </body>
    </html>
    <?php
    }
    else{ // sinon, pas de varriable user, le visiteur arrive dirrectement sur la page, on le redirrige
        header("Location: index2.php");
    }
    ?>
    Voila une id ?

  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
    Je lis le script, deuxieme ligne $tentative = 1;
    Ca commence mal pour une eventuelle incrementation.

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!isset($_SESSION["tentative"]))
     $_SESSION["tentative"]=1;
    et remplace tes $tentative par $_SESSION["tentative"]

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Je ne comprend pas l'utilité d'une autre variable de session pour tentative... Pourquoi une cela marcherais plus que la variable seul ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Je viens de capter !

    Citation Envoyé par FotoXe33 Voir le message
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?php
    if(isset($_SESSION['user'])){
        $tentative = 1;
        $message = "Tentative 1/3";
        if(isset($_POST['pass'])){ // ... on verifit qu'on a aussi remplit la champ "pass"
              // [...]
              if($verif == 1){ // en gros, j'ai précédament fait une requette qui vérifit si le compte existe et que c'est les bons log
                      // on se connecte et tt le bazar...
              }
              else{ // mauvais mot de passe puisque cette partie ne traite que le mot de passe et pas le login qui a été entré précédament...
                            $tentative++;
                            if($tentative < 4){
                                $message = "Tentative ".$tentative."/3<br>Mot de passe incorrect !"; // On l'informe
                            }
                            else{
                                // requette qui bloque le compte
                                $message = "Compte bloqué !";
                            }
             }
        }
    ?>
    <!-- le formulaire si nous n'avons pas de mot de passe ($_POST['pass']) -->
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <form action="" method="post">
    <h2>Partie 2/2 :</h2>
    <?php
    if(isset($message)){ // Si il existe une varriable message
    	echo "<br><br><span class=\"imp\" style=\"margin: 50px 0;\">$message</span><br><br><br><br>"; // On l'affiche
    }
    ?>
    <table style="text-align: center; width: 300px;">
    	<tr>
    		<td>Pass :</td>
    		<td><input type="password" name="pass" <?php if($tentative == 3){ echo "disabled=\"disabled\"";} ?>></td>
    	</tr>
    	<tr>
    		<td colspan="2" align="center"><input type="submit" value="Entrer !" <?php if($tentative == 3){ echo "disabled=\"disabled\"";} ?>></td>
    	</tr>
    </table>
    <?php
    if($tentative == 3){ // si c'est la 3éme tentative, on bloque les input (voir ci dessus) et on affiche un lien retour a l'index
        echo "<h2 align=\"center\"><a href=\"/\">Retour à l'acceuil du site</a></h2>";
    }
    ?>
    </form>
    </body>
    </html>
    <?php
    }
    else{ // sinon, pas de varriable user, le visiteur arrive dirrectement sur la page, on le redirrige
        header("Location: index2.php");
    }
    ?>
    Quand on clique pour la deuxième fois sur "ok", php relis de la première ligne, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    if(isset($_SESSION['user'])){
        $tentative = 1; // <== sa remet automatiquement $tentative a 1 !!!
    Donc mon deuxième soucis, comment je fais pour dire a php "$tentative = 1 mais que la première fois !"

    Jai trouvé ! Je vais effectivement utiliser des variables de session, mais dans mon fichier précédent. Dans le fichier en question j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['tentatives'] = 1;
    et je l'enlève dans cette deuxième page

    Merci pour votre aide en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compteur de visiteur unique qui incrémente trop
    Par koshie dans le forum Langage
    Réponses: 1
    Dernier message: 24/03/2012, 18h21
  2. RIA Services & gestion incrément unique
    Par lamorkytu dans le forum Silverlight
    Réponses: 3
    Dernier message: 26/10/2010, 09h59
  3. [ MSSQL 2005] incrément d'un compteur unique
    Par kaboume dans le forum Développement
    Réponses: 0
    Dernier message: 06/03/2009, 14h39
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

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