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 :

code pour reprendre session de l'utilisateur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 28
    Par défaut code pour reprendre session de l'utilisateur
    Bonjour, je n'arrive pas à comprendre quel est le code pour reprendre la session de l'utilisateur. Regardez le commentaire de la ligne 13, je n'arrive pas à compléter cette ligne. Merci d'avance.
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    <?php
     
    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');
     
    if(isset($_POST['validate'])) {
        $answer = htmlspecialchars($_POST['answer']);
        if(!empty($_POST['answer'])){
            $answerlength = strlen($answer);
          if($answerlength <= 255) {
              if($answer == 3) {
              $erreur = "Right answer";
              $id = //Mets ici le code pour reprendre la session de l'utilisateur et donc, son id
              $points = $bdd->exec('SELECT points FROM tadb WHERE id = '.$id.'');
              $newpoints = ($points + 1);
              $insertpoints = $bdd->exec('INSERT INTO `tadb`(`points`) VALUES ('.$newpoints.')');
              }
              else {
                 $erreur = "Wrong answer" ;
              }
             } else {
                 $erreur = "Your answer must not exceed 255 print";
             }
        } else {
            $erreur = "Your answer is empty";
        }
    }
    ?>
     <html>
      <head>
      <meta charset="utf-8" />
      <title>Solving problem</title>
      </head>
      <body style="background-color: #FFD700; text-align: center;" >
    <div>
    <h1> Recent problems to solve </h1>
     <div>
     <p> <TABLE BORDER="1" style="margin: auto; width: 1000px; height: 900px;">
       <TR>
      <TH>   </TH>
     <TH> Name </TH>
     <TH> Age </TH>
     <TH> Country </TH>
     <TH> Problem </TH>
     <TH> Answer to the problem </TH>
      </TR>
      <TR>
     <TH> Problem 1 </TH>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD style="width: 200px; height: 276px;">
                     <form action="" method="POST">
                         <label for="answer">Your solution :</label>              
                         <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if (!empty($answer)) { echo $answer; } ?>" />
                         <br />
                         <input type="submit" name="validate" value="Validate my answer" />
                         <?php
             if(isset($erreur)) {
                echo '<font color="red">'.$erreur."</font>";
             }
             ?>
     
     
                   </TD>
      </TR>
      </form>
      <TR>
     <TH> Problem 2 </TH>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD>
     <form action="" method="POST">
        <label for="answer">Your solution :</label>              
                         <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if(isset($answer2)) { echo $answer2; } ?>" />
                         <br />
                         <input type="submit" name="validate2" value="Validate my answer" />
                         <?php
             if(isset($erreur2)) {
                echo '<font color="red">'.$erreur2."</font>";
             }
             ?>
                         </TD>
     
      </TR>
    </form>
      <TR>
     <TH> Problem 3 </TH>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD>  </TD>
     <TD>
     <form action="" method="POST">
        <label for="answer">Your solution :</label>              
                         <input type="text" placeholder="Your answer" id="answer" name="answer" value="<?php if(isset($answer3)) { echo $answer3; } ?>" />
                         <br />
                         <input type="submit" name="validate3" value="Validate my answer" />
                         <?php
             if(isset($erreur3)) {
                echo '<font color="red">'.$erreur3."</font>";
             }
             ?>
                         </TD>
      </TR>
    </form>
    </TABLE></p></div>
    </div>
     
    </body>
     </html>

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    salut

    C'est un exercice?
    tu ne diras à la personne qu'il y a une faille de sécurité ligne 14 et eventuellement 16 et que c'est navrant de faire du PDO pour ça.

    C'est quoi pour toi la session utilisateur? ça désigne quel concept? la session PHP (cf http://php.net/manual/fr/function.session-start.php) ? la session de base de donnée?

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 28
    Par défaut
    Bonjour, merci tout d'abord pour votre réponse.

    Je suis un lycéen en 1°S qui débute en php et je voudrais créer un questionnaire pour mon site. Si l'utilisateur rentre la bonne réponse à la question, alors tout simplement je lui ajoute 1 point dans la colonne points de la table membre (id, pseudo, mail, motdepasse, points) dans ma base de données espace_membres. De plus, je voudrais aussi que l'utilisateur n'ait que 3 tentatives, pour éviter qu'il essaye toutes les possibilités. Enfin, lorsque j'ai réussi tout cela, je voudrais faire un classement des membres ayant le plus de points. Je tiens aussi à préciser que j'ai fait ce code tout seul, j'ai été aidé que pour les lignes 13 à 16. Je suppose qu'il s'agit de la session base de données, car je veux incrémenter la colonne points de l'utilisateur dans la table membre, s'il répond correctement.

    J'ai déjà fait pas mal de boulot. En effet, j'ai crée un formulaire d'inscription et de connexion, qui fonctionne bien et qui stocke les informations dans ma base de données.

    Voilà, j'espère avoir été clair. Merci d'avance pour votre aide très précieuse !

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 28
    Par défaut
    J'ai modifié mon code de la ligne 11 à 15 et en ajoutant session_start(), je n'ai plus de message d'erreur, mais ça n'incrémente pas ma colonne points...
    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
     
    <?php
      session_start();
    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');
     
    if(isset($_POST['validate'])) {
        $answer = htmlspecialchars($_POST['answer']);
        if(!empty($_POST['answer'])){
            $answerlength = strlen($answer);
          if($answerlength <= 255) {
              if($answer == 3) {
              $erreur = "Right answer";
              $id = $_SESSION['id'];
              $points = $bdd->exec("SELECT points FROM membres WHERE id = '.$id.'");
              $newpoints = ($points + 1);
              $insertpoints = $bdd->exec("INSERT INTO membres (points) VALUES ('.$newpoints.')");
              }

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    est ce que tu veux qu'un utilisateur ne puisse faire que 3 tentatives dans toutes "sa vie" oubien par session?

    il faut ajouter un compteur de tentative dans ta $_SESSION sinon dans la base de donnée.

  6. #6
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pour incrementer ton compteur en base de donnée, il faut passer par un ordre sql UPDATE et non INSERT.

Discussions similaires

  1. Trolldi : le Dark Programming ou l’art d’écrire un code pour tromper les utilisateurs
    Par Michael Guilloux dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 02/03/2017, 10h01
  2. [AC-2003] Code pour afficher les utilisateurs connectés à une BDD
    Par LionelDM dans le forum IHM
    Réponses: 2
    Dernier message: 07/01/2010, 18h04
  3. Code pour changer groupe utilisateurs?
    Par sash6 dans le forum Sécurité
    Réponses: 2
    Dernier message: 20/11/2009, 11h33
  4. Faire un compteur pour des sessions utilisateurs
    Par liverbird dans le forum C++Builder
    Réponses: 55
    Dernier message: 21/06/2006, 16h37
  5. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 12h29

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