Partage
  • Partager sur Facebook
  • Partager sur Twitter

Association de variable en PHP

Associer une variable à un compte

Sujet résolu
    22 juin 2018 à 10:58:29

    Bonjour à tous, 

    Je vous contacte aujourd’hui car je suis en train de créer un quiz, j'ai déjà créer la plupart de la base de mon quiz, il affiche parfaitement les questions sélectionnées dans la BDD, il va chercher la bonne réponse réponse dans la BDD et la compare à la réponse rentrée par l'utilisateur. Tout ceci fonctionne parfaitement mais maintenant, je souhaiterais associer le score que la personne réalise à son profil (il faut savoir que le quiz calcule déjà le score pour pour le moment, de façon assez basique, je lui crée une variable score que j'augmente simplement de 1 si la réponse saisie est bonne). J'ai réussi aussi à faire intégrer le score de la personne dans la BDD mais seulement, je n'arrive pas à l'associer à son pseudo ou plutôt à son profil. Si quelqu'un aurait une piste afin de m'aider à réaliser ceci ? 

    Aussi, je voulais vous demander, est-il possible de créer une variable $_SESSION lors de l’inscription de la personne sur le site ? Si oui, pourriez-vous m'expliquer le cheminement afin de le réaliser ? Pour le moment, ma variable $_SESSION ne se crée uniquement lorsque l'utilisateur se connecte avec ses identifiants dans la page de connexion. 

    Merci d'avance à tous ceux qui m'apporteront leur aide. 

    Cordialement.

    Quentin

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2018 à 11:11:44

      Tu peux faire une variable de session en fonction de son ip à la limite et ensuite tu stockes dans une table l'ip et le score, et une fois que l'ip est inscrite tu fait une copie de ce score dans la bonne table en face de la bonne personne :)
      • Partager sur Facebook
      • Partager sur Twitter
      Développeur FrontEnd | Site CV / Site PRO
        22 juin 2018 à 11:12:47

        Salut,

        Pourrais tu nous montrer ton code, et idéalement un schéma de ta BDD ?

        Tes utilisateurs remplissent-ils plusieurs questionnaires ou un seul ?

        Pour les variables de sessions, tu peux les créer/modifier/supprimer a tout moment, mais elles disparaissent quand un utilisateur quitte ton site.

        • Partager sur Facebook
        • Partager sur Twitter
        Étudiant en Informatique / C#, PHP, HTML, jQuery, CSS, CMS Drupal, SQL et BDD
          22 juin 2018 à 11:35:23

          BurnyOldy a écrit:

          Salut,

          Pourrais tu nous montrer ton code, et idéalement un schéma de ta BDD ?

          Tes utilisateurs remplissent-ils plusieurs questionnaires ou un seul ?

          Pour les variables de sessions, tu peux les créer/modifier/supprimer a tout moment, mais elles disparaissent quand un utilisateur quitte ton site.


          Bien sûr, les utilisateurs remplissent uniquement un formulaire d'inscription au début. 

          Voici donc le code de ma page contenant le formulaire d'inscription sur lequel arrive le visiteur au tout début : 

          <?php
          $email = $pass = $pseudo = "";
          $emailError = $passError = $pseudoError = $pass2Error = "";
          $isSuccess = false;
          		function verifyInput($var){
          			$var = trim($var);
          			$var = stripslashes($var);
          			$var = htmlspecialchars($var);
          			return $var;
          		}
          		function isEmail($var){
          			return filter_var($var, FILTER_VALIDATE_EMAIL);
          		}
          	if ($_SERVER["REQUEST_METHOD"] == "POST"){
          			$email = verifyInput($_POST['email']);
          			$pseudo = verifyInput($_POST['pseudo']);
          			$pass = verifyInput($_POST['pass']);
          			$pass2 = verifyInput($_POST['pass2']);
          			$isSuccess = true;
          	if(!isEmail($email)){
          		$emailError = "L'email que vous avez rentrer n'est pas au bon format ou vous n'avez pas rentré d'email";
          		$isSuccess = false;
          	}
          		if(empty($pseudo)){
          		$pseudoError = "Veuillez vérifier que vous avez bien rentrer un pseudo";
          		$isSuccess = false;
          	}
          		if(empty($pass)){
          		$passError = "Veuillez vérifier que vous avez bien rentrer un mot de passe";
          		$isSuccess = false;
          	}
          		if(empty($pass2)){
          		$pass2Error = "Veuillez vérifier que vous avez bien retapé votre mot de passe";
          		$isSuccess = false;
          	}
          		else{
          try 
          {
          	$bdd = new PDO('mysql:host=localhost;dbname=id6213603_quiz', '', '');
          }
          catch (exception $e)
          {
          	die('Erreur: ' .$e->getMessage());
          }
          	$hash = md5($_POST['pass']);
          	$score = 0;
          	$reponse = $bdd->query("INSERT INTO membres(email, pass, pseudo, score) VALUES ('$email', '$hash', '$pseudo', '$score')");
          	header('Location: accueil.php');
          }
          	}
          ?>
          <! DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<meta name="viewport" content="device=device-width, initial-scale=1">
          		<link rel="stylesheet" href="style4.css" />
          		<title>Inscription</title>
          	</head>
          	
          	<body>
          	<div class="container">
          	<div class="row">
          	<h1 class="m12">Bienvenue sur la page pour vous inscire sur le site internet</h1>
          	<p>Votre inscription sur le site dès votre arrivée, vous permettra ainsi de sauvegarder votre score et de l'afficher dans votre profil. Dans le futur, bien d'autres fonctionnalitées liés à votre compte apparaîtront sur le site...</p>
          	<form action ="index.php" method="post" role="form" id="inscription-form">
          	<div class="row">
          		<div class="col-md-6">
          		<label for="email">Email :</label>
          		<input type="text" name="email" id="email" placeholder="Votre e-mail" class="form-control"/> </br>
          		<p class="comments"><?php echo $emailError; ?></p> 
          		</div>
          		
          		<div class="col-md-6">
          		<label for="username">Nom d'utilisateur :</label>
          		<input type="text" name="pseudo" id="pseudo" placeholder="Votre pseudo" class="form-control" /> </br>
          		<p class="comments"><?php echo $pseudoError; ?></p> 
          		</div>
          		
          		<div class="col-md-6">
          		<label for="pass">Mot de passe :</label>
          		<input type="password" name="pass" id="pass" placeholder="Mot de passe" class="form-control" /> </br>
          		<p class="comments"><?php echo $passError; ?></p> 
          		</div>
          		
          		<div class="col-md-6">
          		<label for="repeat_pass">Rétaper votre mot de passe:</label>
          		<input type="password" name="pass2" id="pass" placeholder="Retaper votre mot de passe" class="form-control"/> </br>
          		<p class="comments"><?php echo $pass2Error; ?></p> 
          		</div>
          		
          		<br />
          		<input type="submit" class="button" value="Valider" />
          		Si vous vous êtes déjà inscrit, veuillez cliquer <a href="connexion.php" class="connexion">ici</a>
          	
          		</div>
          		</div>
          		</div>
          		</form>
          	</body>
          	</html>

          Et ci-joint une capture d'écran de la table "membres" de ma BDD : 

          Voila en espérant que tu as tout ce qu'il te faut. 

          EDIT : @Pickles : 


          C'est compliqué à faire tout ça ? On ne peut pas faire plus facile simplement en l'associant à son pseudo qu'il rentre dès le début en se connectant, je pense que ceci serait beaucoup plus simple à mettre en oeuvre ? 

          Merci. 

          Cordialement. 

          Quentin

          -
          Edité par QuentinGiraud5 22 juin 2018 à 11:39:23

          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2018 à 13:00:04

            Salut,

            Il faut que tu suives cette exemple :

            • L'utilisateur s'enregistre (formulaire) -> Tu l’insère dans la base avec toutes les données fournies, en laissant son score vide (ou à 0 comme tu veux).
            • L'utilisateur est connecté -> Tu crées une variable de session dans laquelle tu récupère le pseudo (ou son ID).
            • L'utilisateur rempli son questionnaire. Quand il le valide, tu récupère son pseudo (ou son id) stocké dans ta variable de session.
            • Tu mets à jour le score de l'utilisateur dans ta base (UPDATE en SQL) avec une condition (WHERE en SQL) qui vérifie le pseudo (ou son id) de ta variable de session.

            Si tu as besoin de plus de détails (code, requêtes..), reviens vers nous.

            Si tu as peur que la page soit trop charger en code/requête, tu peux mettre tes fonctions et requêtes dans un autre fichier.

            Bon courage.

            • Partager sur Facebook
            • Partager sur Twitter
            Étudiant en Informatique / C#, PHP, HTML, jQuery, CSS, CMS Drupal, SQL et BDD
              22 juin 2018 à 13:17:04

              BurnyOldy a écrit:

              Salut,

              Il faut que tu suives cette exemple :

              • L'utilisateur s'enregistre (formulaire) -> Tu l’insère dans la base avec toutes les données fournies, en laissant son score vide (ou à 0 comme tu veux).
              • L'utilisateur est connecté -> Tu crées une variable de session dans laquelle tu récupère le pseudo (ou son ID).
              • L'utilisateur rempli son questionnaire. Quand il le valide, tu récupère son pseudo (ou son id) stocké dans ta variable de session.
              • Tu mets à jour le score de l'utilisateur dans ta base (UPDATE en SQL) avec une condition (WHERE en SQL) qui vérifie le pseudo (ou son id) de ta variable de session.

              Si tu as besoin de plus de détails (code, requêtes..), reviens vers nous.

              Si tu as peur que la page soit trop charger en code/requête, tu peux mettre tes fonctions et requêtes dans un autre fichier.

              Bon courage.


              D'accord. Par contre il y quelques points que je comprends pas forcément dans ce que tu me dis : 

              • Si je comprends bien, pour que l'utilisateur se connecte, je dois le renvoyer directement vers la page de connexion après qu'il se soit inscrit ? il ne serait pas plus simple de créer directement les variable $_SESSION dès qu'il valide son inscription ? 
              • Je n'arrive pas bien à suivre comment tu veux que j'aille chercher le pseudo de la personne lorsqu'il valider sa réponse ? Je fais un rappel de la session précédemment créer sans la faire afficher sur l'écran de l'utilisateur ? 
              • Je ne suis pas du tout le "dernier paragraphe", comment tu veux que je vérifie le pseudo avec la variable SESSION sachant que pour le moment, je ne lui demande à aucun moment de rentrer son pseudo hormis lors de son inscription ? 

              Comme tu parles de soucis de page surchargée, ça ne fait pas spécialement peur, il faudra juste que je l'organise en faisant des espaces "alinéas" différents pour chaque condition différente. Le fait que la page contiennent beaucoup de code ralentit énormément son traitement ? Cela est visible pour l'utilisateur ? 

              Merci. 

              Quentin

              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2018 à 13:35:07

                Si je comprends bien, pour que l'utilisateur se connecte, je dois le renvoyer directement vers la page de connexion après qu'il se soit inscrit ? il ne serait pas plus simple de créer directement les variable $_SESSION dès qu'il valide son inscription ?

                Tu peux le considérer comme "connecté" dés qu'il s'est inscrit, dans ce cas la, tu peux directement enregistrer la variable de SESSION avec son pseudo (ou id).

                Je n'arrive pas bien à suivre comment tu veux que j'aille chercher le pseudo de la personne lorsqu'il valider sa réponse ? Je fais un rappel de la session précédemment créer sans la faire afficher sur l'écran de l'utilisateur ?

                Oui, exactement.

                Je ne suis pas du tout le "dernier paragraphe", comment tu veux que je vérifie le pseudo avec la variable SESSION sachant que pour le moment, je ne lui demande à aucun moment de rentrer son pseudo hormis lors de son inscription ?

                S'il peut remplir le formulaire, cela veut dire qu'il est inscrit (et connecté, donc ta variable de SESSION['pseudo'] existe). Donc tu peux faire un update avec un WHERE pseudo = '.$_SESSION['pseudo'].'

                Le fait que la page contiennent beaucoup de code ralentit énormément son traitement ? Cela est visible pour l'utilisateur ?

                Euh j'en sais trop rien, mais pour travailler de manière méthodique c'est mieux, surtout si tu arrives sur des projets où tu as beaucoup de requêtes ou de fonctions.

                PS : N'oublie pas les session_start() au début de tes pages qui utilisent des variables de session.

                -
                Edité par BurnyOldy 22 juin 2018 à 13:41:49

                • Partager sur Facebook
                • Partager sur Twitter
                Étudiant en Informatique / C#, PHP, HTML, jQuery, CSS, CMS Drupal, SQL et BDD
                  22 juin 2018 à 13:41:10

                  BurnyOldy a écrit:

                  Si je comprends bien, pour que l'utilisateur se connecte, je dois le renvoyer directement vers la page de connexion après qu'il se soit inscrit ? il ne serait pas plus simple de créer directement les variable $_SESSION dès qu'il valide son inscription ?

                  Tu peux le considérer comme "connecté" dés qu'il s'est inscrit, dans ce cas la, tu peux directement enregistrer la variable de SESSION avec son pseudo (ou id).

                  Je n'arrive pas bien à suivre comment tu veux que j'aille chercher le pseudo de la personne lorsqu'il valider sa réponse ? Je fais un rappel de la session précédemment créer sans la faire afficher sur l'écran de l'utilisateur ?

                  Oui, exactement.

                  Je ne suis pas du tout le "dernier paragraphe", comment tu veux que je vérifie le pseudo avec la variable SESSION sachant que pour le moment, je ne lui demande à aucun moment de rentrer son pseudo hormis lors de son inscription ?

                  S'il peut remplir le formulaire, cela veut dire qu'il est inscrit (et connecté, donc ta variable de SESSION['pseudo'] existe). Donc tu peux faire un update avec un WHERE pseudo = '.$_SESSION['pseudo'].'

                  Le fait que la page contiennent beaucoup de code ralentit énormément son traitement ? Cela est visible pour l'utilisateur ?

                  Euh j'en sais trop rien, mais pour travailler de manière méthodique c'est mieux, surtout si tu arrives sur des projets où tu as beaucoup de requêtes ou de fonctions.

                  D'accord. Pas de soucis. Merci pour tout. Grâce à toi, maintenant tout s'éclaircit de plus en plus dans ma tête :). Par contre juste une dernière petite question, je n'arrive pas à suivre quand tu me dis aussi que tu peux faire avec l'ID de la personne au lieu de son pseudo ? 

                   Cela apporte vraiment quelque chose de mieux ? Et cela serait peut-être aussi plus simple pour quand il faut qu'il modifie ses identifiants (car j'ai déjà créer une page où il arrive sur son profil et peux modifier son email, mot de passe et pseudo tout en ajoutant un nom et un prénom. Pour le moment, je n'ai pas encore fait le traitement dans la BDD) ?

                  Merci pour toute ton aide. 

                  Quentin

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juin 2018 à 13:53:07

                    Salut,

                    Il faut savoir qu'il sera toujours plus "sur" de passer par l'ID. Simplement car un ID est unique et n'est pas amener à être changer (il n'y aura qu'un seul utilisateur qui aura cet ID) alors qu'un pseudo peu changer.

                    De rien, n'hésite pas si tu as d'autres questions, je ne suis pas un expert mais si je peux aider.

                    Tu peux aussi naviguer sur ce cours pour mieux comprendre le fonctionnement des sessions : https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/session-cookies



                    • Partager sur Facebook
                    • Partager sur Twitter
                    Étudiant en Informatique / C#, PHP, HTML, jQuery, CSS, CMS Drupal, SQL et BDD
                      22 juin 2018 à 14:02:41

                      BurnyOldy a écrit:

                      Salut,

                      Il faut savoir qu'il sera toujours plus "sur" de passer par l'ID. Simplement car un ID est unique et n'est pas amener à être changer (il n'y aura qu'un seul utilisateur qui aura cet ID) alors qu'un pseudo peu changer.

                      De rien, n'hésite pas si tu as d'autres questions, je ne suis pas un expert mais si je peux aider.

                      Tu peux aussi naviguer sur ce cours pour mieux comprendre le fonctionnement des sessions : https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/session-cookies

                      D'accord. Tu n'est peut-être pas expert comme tu le dis mais tu te débrouilles déjà plutôt bien je trouve :). Tu maitrises aussi le CSS ? Car je rencontre un petit problème au niveau de l'application du CSS (il ne s'applique pas comme il le faudrait).

                      Quentin



                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juin 2018 à 14:11:15

                        Salut,

                        Oui je maitrise normalement, tu as deux choix :

                        • Venir par message privé.
                        • Ouvrir un sujet. Ce choix à un avantage, si quelqu'un a le même problème et qu'on arrive à le résoudre, il aura la solution.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Étudiant en Informatique / C#, PHP, HTML, jQuery, CSS, CMS Drupal, SQL et BDD
                          22 juin 2018 à 14:13:34

                          BurnyOldy a écrit:

                          Salut,

                          Oui je maitrise normalement, tu as deux choix :

                          • Venir par message privé.
                          • Ouvrir un sujet. Ce choix à un avantage, si quelqu'un a le même problème et qu'on arrive à le résoudre, il aura la solution.


                          Ok, je crois que je vais prendre l'option message privé ce sera plus simple.

                          Merci.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Association de variable en PHP

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown