Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gros problèmes pages: 'inscription' et 'connexion'

Sujet résolu
    13 janvier 2021 à 8:13:41

    Bonjour à tous! :)

    Voilà je me tourne vers vous tous (complètement désespéré et à un peu à bout de nerf aussi ^^) après 3 jours de galère sur deux gros problèmes.

    Etant en formation sur le site, je dois créer un intranet pour le GBAF, je galère à trouver des solutions. J'ai passé en revue mon code, tester pleins d'alternatives, consulté des sites ou des vidéos en espérant trouver le problème moi-même mais sur ma page d'inscription je me trimballe toujours le même problème le fameux "Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp64\www\test\GBAF\inscription_post.php on line 45 " 

    Impossible de trouver la solution malgré une ré-écriture complète du code et en essayant de le rendre clair j'arrive toujours pas à voir où j'ai merdé ^^ Je vous donne donc le code php de la page servant à exécuter les script nommé "inscription_post.php" :  

    <?php
      
    try   
    {
        $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    }
    
    catch(Exception $e)
    {
    	die('Erreur' .$e-> getMessage());
    }
    
    
    
    
       			if(isset($_POST['forminscription'])) 
    {
    		      				
    
          			if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['pseudo']) AND !empty($_POST['password']) AND !empty($_POST['question']) AND !empty($_POST['reponse']))
        {  				 
        						$pseudolenght = strlen($pseudo);
        			
    
     							$nom = htmlspecialchars($_POST['nom']);
    		      				$prenom = htmlspecialchars($_POST['prenom']);
    		      				$pseudo = htmlspecialchars($_POST['pseudo']);
    		      				$password = password_hash(($_POST['password']), PASSWORD_DEFAULT);
    		      				$question = htmlspecialchars($_POST['question']);
    		      				$reponse = htmlspecialchars($_POST['reponse']);
    
    
        				if($pseudolenght <= 255)
        	{								
        							$insert_membre = $bdd->prepare("INSERT INTO membre(nom, prenom, pseudo, password, question, reponse) VALUES(:nom, :prenom, :pseudo, :password, :question, :reponse)");
        							$insert_membre->execute(array($nom, $prenom, $pseudo, $password, $question, $reponse));
        							$erreur = "Votre compte a bien été crée!";
        							
        	}			
        				else
        				{
        					$erreur = "Votre pseudo ne doit pas dépasser 255 caractères!";
        				}
    
        			else
        			{
        				$erreur = "Tous les champs doivent être remplis!";
        			}	
        }			
    }
    
    
    ?>	

    et du coup la page d'inscription du site contenant le HTML, nommé 'inscription.php'

    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width" />
           	<link rel="stylesheet" type="text/css" href="Style2.css">
            <title>GBAF, inscription des adhérents</title>
        </head>
    
        <body>
    
            
             <!-- -->
            <header id="header_form">
                <a href="#"><img src="Images/Logo_GBAF.jpg" class="logo_petit" alt="logo de GBAF" /></a>
                
    					        </header>
    					                
    					        
    					    <section >
    					      
    			 <div>
    
    					        <h1>Inscription</h1>
    
    	<br /><br /> 
    
    			
    
    
    	<br />
    					       
    				<form method="POST" action="inscription_post.php">
    
    				<table>	
    				<tr>
    					<td align="right">	<label for="nom"><strong>Votre Nom : </strong></label> </td>
    					<td>				<input type="text" id="nom" name=nom/> </td>
    				</tr>
    				<tr>
    					<td align="right">	<label for="prenom"><strong>Votre prénom: </strong></label> </td>
    					<td>				<input type="text" id="prenom" name=prenom/> </td>
    				</tr>			
    				<tr>	
    					<td align="right">	<label for="pseudo"><strong>Pseudo:</strong> </label> </td>
    					<td>				<input type="text" id="pseudo" name=pseudo/> </td>
    				</tr>
    				<tr>	
    					<td align="right">	<label for="password"><strong>Mot de passe:</strong></label> </td>
    					<td >				<input type="password" id="password" name=passeword/> </td>
    				</tr>
    				<tr>	
    					<td align="right">	<label for="question"><strong>Votre question secrète: </strong> </label> </td>
    					<td>				<input type="text" id="question" name=question/> </td>
    				</tr>
    				<tr>
    					<td align="right">	<label for="reponse"><strong>Réponse à la question secrète:</strong> </label></td>
    					<td>				<input type="text" id="reponse" name=reponse> </td>
    					</tr>
    					
    					<tr>
    						<td></td>
    						<td><input type="submit" name="forminscription" class="inscription" value="Je m'inscris"/> </td>
    					</tr>
    				</table>
    									
    				<?php 
    
    				if(isset($erreur))
    				{
    					echo $erreur;
    				}
    			?>
    
    				</form>	
    			<br />	
    				
    
    			 </div>
    
    
    
    
    
    					        
    					    </section>
    
            <footer class="site-footer">
                <p class="mentions">Mentions légales | Contact</p>
            </footer>
        </body>
    </html>

    Au moins où j'en suis je me permets de vous partager aussi le problème avec ma page de connexion avec laquelle j'ai deux erreurs qui s'affiche qui sont: Undefined variable: pseudo in C:\wamp64\www\test\GBAF\connexion_post.php on line 17 

    et: Notice: Undefined index: password in C:\wamp64\www\test\GBAF\connexion_post.php on line 21


    Je vous mets égalements les codes des pages. D'abord  connexion_post.php '

    <?php
        session_start();
    
        try
    { 
    
    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    }
    catch (Exception $e)
    {
        die('Erreur : '. $e->getMessage());
    }
    
    
            $req = $bdd->prepare('SELECT id, password FROM membres WHERE pseudo = :pseudo');
            $req->execute(array(
                        'pseudo' => $pseudo));
            $resultat = $req->fetch();
    
    
            $isPassCorrect = password_verify($_POST['password'] , $resultat['password']);
    
            if(!$resultat)
            {
                $erreur = 'Mauvais identifiant ou mot de passe!';
            }    
            else
            {
                if($isPassCorrect) {
                        session_start();
                        $_SESSION['id'] = $resultat['id'];
                        $_SESSION['pseudo'] = $pseudo;
                        $erreur = 'Vous êtes connecté !';
                        header('Location: tableau.php');                
                }
                else {
                    $erreur = 'Mauvais identifiant ou mot de passe!';
                }
            }    
    
    
    
    
    
    ?>

    et la page du code HTLM 'connexion.php':

    <?php
      
     $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    
    
    
    ?>
    
    
    
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width" />
            <link rel="stylesheet" type="text/css" href="Style2.css">
            <title>GBAF, inscription des adhérents</title>
        </head>
    
        <body>
    
    
    
    
    
            
             <!-- -->
            <header id="header_form">
                <a href="#"><img src="Images/Logo_GBAF.jpg" class="logo_petit" alt="logo de GBAF" /></a>
                
                                </header>
                                        
                                
                            <section >
                              
                 <div>
    
                                <h1>Connexion</h1>
    
        <br /><br /> 
    
                
    <?php 
    
        if(isset($erreur))
        {
             echo $erreur;
         }
    ?>
    
        <br />
                               
                    <form method="POST" action="connexion_post.php">
    
                    <table> 
                    
                    <tr>    
                        <td align="right">  <label for="pseudo"><strong>Pseudo:</strong> </label> </td>
                        <td>                <input type="text" id="pseudo" name=pseudo/> </td>
                    </tr>
                    <tr>    
                        <td align="right">  <label for="password"><strong>Mot de passe:</strong></label> </td>
                        <td >               <input type="password" id="password" name=password/> </td>
                    </tr>
                
                            <td></td>
                            <td>            <input type="submit" name="formconnexion" class="connexion" value="Connexion"/> </td>
                        </tr>
                    </table>
                                        
                    
    
                    </form> 
                <br />  
                    
    
                 </div>
    
    
    
    
    
                                
                            </section>
    
            <footer class="site-footer">
                <p class="mentions">Mentions légales | Contact</p>
            </footer>
        </body>
    </html>

    Je suis désolé ça fait un peu long comme sujet... Mais j'espère qu'on pourra m'aider!

    Je vous remercie d'avance pour votre aide! passer une bonne journée et prenez soin de vous. :)




    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2021 à 9:01:27

      Bonjour,

      première chose : refais ton indentation, dans le premier code. Tu vas voir où est ton erreur.

      En PHP l'indentation n'est pas "obligatoire", comme en Python par exemple, mais si on ne fait pas gaffe on peut se créer ces soucis ;)

      -
      Edité par Lamecarlate 13 janvier 2021 à 9:02:09

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        13 janvier 2021 à 9:07:05

        Je te remercie de ta réponse! Je vais y jeter un coup d'oeil et voir ça de plus près une fois que je serai un peu reposé :)

        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2021 à 9:12:49

          Bonjour,

          Alors 1ier script : voir l'instruction if else ... ce serait donc plutôt elseif qu'il faudrait utiliser que 2 fois else ...

          https://www.php.net/manual/en/control-structures.elseif.php

          2 ième script : elle vient d'où la variable $pseudo ? quand aux variables en post comment savoir si elles sont bien transmises ?

          Pour débuguer faire des var_dump. https://www.php.net/manual/en/function.var-dump.php

          A+

          -
          Edité par monkey3d 13 janvier 2021 à 9:13:58

          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2021 à 12:27:50

            Bonjour.

            Je dirais surtout

            Htmlspecialchar mal utilisé 

            Requete mal préparer à l'insertion 

            -
            Edité par Aurélien10! 13 janvier 2021 à 12:29:16

            • Partager sur Facebook
            • Partager sur Twitter
              13 janvier 2021 à 13:15:16

              monkey3d a écrit:

              Bonjour,

              Alors 1ier script : voir l'instruction if else ... ce serait donc plutôt elseif qu'il faudrait utiliser que 2 fois else ...

              https://www.php.net/manual/en/control-structures.elseif.php

              2 ième script : elle vient d'où la variable $pseudo ? quand aux variables en post comment savoir si elles sont bien transmises ?

              Pour débuguer faire des var_dump. https://www.php.net/manual/en/function.var-dump.php

              A+

              -
              Edité par monkey3d il y a environ 4 heures

              La variable pseudo à la ligne 17 est celle venant de la ligne 15 puisque je parle du pseudo dans la base de donnée... c'est censé compté non? en plus c'est le même nom donné sur le code HTML pour éviter toute confusion... idem pour "pseudo...

              Sinon Aurélien j'applique le htmlspecialchars comme il est conseillé dans le cours. Après pour ta remarque sur la requete mal préparée un l'insertion se sèche un peu. ^^

              C'est là qu'on voit tout l'amateurisme de mon code :( pourtant je me suis beaucoup appuyé sur le cours et d'autres sujets résolu du forum ^^

              Merci de vos réponses en tout cas :)

              -
              Edité par BenoîtPerussel 13 janvier 2021 à 13:22:29

              • Partager sur Facebook
              • Partager sur Twitter
                13 janvier 2021 à 13:43:59

                Salut

                BenoîtPerussel a écrit:

                Sinon Aurélien j'applique le htmlspecialchars comme il est conseillé dans le cours.

                A moins que ça ait changé depuis (car j'avais vérifié une fois quand un autre membre soutenait mordicus que c'était le cas), il n'est jamais dit dans le cours que cela doit être utilisé avant d'envoyer les données dans la base, et si cela venait à changer, il y aurait des voix pour condamner cette manière de faire dans un tutoriel connu.
                Même sans cela, ne pas confondre faille par injection SQL et faille XSS.

                -
                Edité par Ymox 13 janvier 2021 à 13:44:53

                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2021 à 13:46:41

                  Ymox a écrit:

                  Salut

                  BenoîtPerussel a écrit:

                  Sinon Aurélien j'applique le htmlspecialchars comme il est conseillé dans le cours.

                  A moins que ça ait changé depuis (car j'avais vérifié une fois quand un autre membre soutenait mordicus que c'était le cas), il n'est jamais dit dans le cours que cela doit être utilisé avant d'envoyer les données dans la base. Ne pas confondre faille par injection SQL et faille XSS.


                  Effectivement tu as raison, je peux donc enlever le htmlspecialchars et garde juste le password_hash du coup?

                  Mais je suis pas sûr que cela résoudra l'erreur... ^^

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 janvier 2021 à 13:48:29

                    Oh là oh là ... j'ai l'impression qu'il y a micmac !

                    En ligne 17 tu indiques que tu vas faire une sélection sur le pseudo dans ta base de données avec la valeur contenue dans la variable $pseudo : certes ! mais je le redis qu'elle est la valeur de la variable $pseudo. Donc fait juste avant un simple var_dump($pseudo) et tu verras si tu as une valeur.

                    Pas de réponse sur la suggestion elseif ?

                    A+

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 janvier 2021 à 19:15:31

                      ta requête préparer pour l'insert contient des marqueurs nommés or ton execute n'est construit que pour des marqueurs "?"

                      ça devrait te valoir un belle erreur de PDO

                      le cours à bien une lacune et c'est sur le "$isPassCorrect = ... " qui devrait être dans le esle

                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 janvier 2021 à 10:21:44

                        monkey3d a écrit:

                        Oh là oh là ... j'ai l'impression qu'il y a micmac !

                        En ligne 17 tu indiques que tu vas faire une sélection sur le pseudo dans ta base de données avec la valeur contenue dans la variable $pseudo : certes ! mais je le redis qu'elle est la valeur de la variable $pseudo. Donc fait juste avant un simple var_dump($pseudo) et tu verras si tu as une valeur.

                        Pas de réponse sur la suggestion elseif ?

                        A+

                        J'ai essayé avec le eslif et ç n'a pas l'air de cgangé grand chose... j'ai toujours autant d'erreurs... je suis désespéré je comprends ni pourquoi ni ou ni comment j'ai merdé... j'ai passé des heures entières à rectifié et essayé et même avec var_dump... enfin je progresse pas du tout... je tourne en rond et ça m'énerve... je commence à être à cours de temps et d'option.. je sais pas quoi faire... :(

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 janvier 2021 à 10:27:34

                          Alors tu souffles et tu prends du recul.

                          Et si tu pouvais répondre factuellement aux questions car que donne le var_dump que je t'ai suggéré ?

                          Et comme tu as du modifier ton code tu pourrai le reposter à jour et ne plus y toucher pour que l'on regarde.

                          A+

                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 janvier 2021 à 13:44:19

                            monkey3d a écrit:

                            Alors tu souffles et tu prends du recul.

                            Et si tu pouvais répondre factuellement aux questions car que donne le var_dump que je t'ai suggéré ?

                            Et comme tu as du modifier ton code tu pourrai le reposter à jour et ne plus y toucher pour que l'on regarde.

                            A+

                            ET bien pour les var_dump j'ai essayé trois fois et cela m'affiche rien juste les cadres oranges avec les erreurs... 

                            DU coup je repartage mes codes (que j'ai refait):

                            donc voici respectivement inscription_post.php

                            <?php
                              
                            try   
                            {
                                $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
                            }
                            
                            catch(Exception $e)
                            {
                            	die('Erreur' . $e-> getMessage());
                            }
                            
                            
                            
                            		if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['pseudo']) && isset($_POST['password']) && isset($_POST['question']) && isset($_POST['reponse']))
                            		{
                            
                            			$nom = htmlspecialchars($_POST['nom']);
                            			$prenom = htmlspecialchars($_POST['prenom']);
                            			$pseudo = htmlspecialchars($_POST['pseudo']);
                            			$password = htmlspecialchars($_POST['password']);
                            			$question = htmlspecialchars($_POST['question']);
                            			$reponse = htmlspecialchars($_POST['reponse']);
                            
                            			$check = $bdd->prepare('SELECT pseudo, password, FROM membres WHERE pseudo = ?');
                            			$check->execute(array($pseudo));
                            			$data = $check->fetch();
                            			$row = $check->rowCount();
                            
                            				if($row == 0)
                            				{
                            					if(strlen($pseudo) <=100)
                            					{
                            						$password =hash('password_hash' , $password);
                            
                            						$insert = $bdd->prepare('INSERT INTO membres(nom, prenom, pseudo, password, question, reponse) VALUES(:nom, :prenom, :pseudo, :password, :question, :reponse)');
                            						$insert->execute(array(
                            								'nom' => $nom,
                            								'prenom' => $prenom,
                            								'pseudo' => $pseudo,
                            								'password' => $password,
                            								'question' => $question,
                            								'reponse' => $reponse,
                            						));
                            						header('Location:connexion.php?reg_err=success');
                            
                            					}
                            					else
                            					{
                            						header('Location: inscription.php?reg_err=pseudo_length');
                            					}
                            
                            
                            
                            				}
                            				else
                            				{
                            					header('Location: inscription.php?reg_err=already');
                            				}
                            
                            
                            		}
                            	  
                            ?>

                            et la page html appelée inscription.php:

                            <?php
                              try
                              	{
                             		$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                            	}
                            	catch(Exception $e)
                            	{
                            		die('Erreur' .$e->getMessage()); 
                            	}
                            
                            ?>
                            
                            
                            <!DOCTYPE html>
                            <html lang="fr" dir="ltr">
                                <head>
                                    <meta charset="utf-8">
                                    <meta name="viewport" content="width=device-width" />
                                   	<link rel="stylesheet" type="text/css" href="Style2.css">
                                    <title>GBAF, inscription des adhérents</title>
                                </head>
                            
                                <body>
                            
                                    
                                     <!-- -->
                                    <header id="header_form">
                                        <a href="#"><img src="Logo_GBAF.jpg" class="logo_petit" alt="logo de GBAF" /></a>
                                        
                            					        </header>
                            					                
                            					        
                            					    <section >
                            					      
                            			 <div>
                            
                            					        <h2>Inscription</h2>
                            
                            	<br /><br /> 
                            
                            	<?php		
                            				if(isset($_GET['reg_err']))
                            				{
                            					$err = htmlspecialchars($_GET['reg_err']);
                            
                            					switch($err)
                            					{
                            						case 'success':
                            	?>				
                            								<p><strong>Succès!</strong>Inscription réussie</p>
                            	<?php
                            						break;
                            					
                            						case 'pseudo':
                            	?>
                            								<p><strong>Erreur!</strong>Pseudo invalide</p>
                            	<?php
                            						break;
                            						
                            						case 'already'
                            	?>
                            								 <p><strong>Erreur!</strong>Compte déjà existant</p>
                            	<?php
                            								 
                            					}
                            
                            				}
                            	?>		
                            		
                            
                            	<br />
                            					       
                            				<form method="post" action="inscription_post.php">
                            
                            				<table>	
                            				<tr>
                            					<td align="right">	<label for="nom"><strong>Votre Nom : </strong></label> </td>
                            					<td>				<input type="text" id="nom" name="nom"/> </td>
                            				</tr>
                            				<tr>
                            					<td align="right">	<label for="prenom"><strong>Votre prénom: </strong></label> </td>
                            					<td>				<input type="text" id="prenom" name="prenom"/> </td>
                            				</tr>			
                            				<tr>	
                            					<td align="right">	<label for="pseudo"><strong>Pseudo:</strong> </label> </td>
                            					<td>				<input type="text" id="pseudo" name="pseudo"/> </td>
                            				</tr>
                            				<tr>	
                            					<td align="right">	<label for="password"><strong>Mot de passe:</strong></label> </td>
                            					<td >				<input type="password" id="password" name="passeword"/> </td>
                            				</tr>
                            				<tr>	
                            					<td align="right">	<label for="question"><strong>Votre question secrète: </strong> </label> </td>
                            					<td>				<input type="text" id="question" name="question"/> </td>
                            				</tr>
                            				<tr>
                            					<td align="right">	<label for="reponse"><strong>Réponse à la question secrète:</strong> </label></td>
                            					<td>				<input type="text" id="reponse" name="reponse"> </td>
                            					</tr>
                            					
                            					<tr>
                            						<td></td>
                            						<td><input type="submit" name="forminscription" class="inscription" value="Je m'inscris"/> </td>
                            					</tr>
                            				</table>
                            									
                            			
                            				</form>	
                            			<br />	
                            				
                            
                            			 </div>
                            
                            
                            
                            
                            
                            					        
                            					    </section>
                            
                                    <footer class="site-footer">
                                        <p class="mentions">Mentions légales | Contact</p>
                                    </footer>
                                </body>
                            </html>

                            Donc il y a eu du mieux mais pour la page "inscription_post" soit j'ai un message d'erreur avec les ligne 27 et 28 mais en réessayant deux minutes avant mon poste, il y a eu simplement une page blanche, j'ignore ce changement.. j'ai l'impression que c'est aux jets de dés que ça se joue. ^^  Et du coup en testant une inscription, la page "inscription.php charge mais me redirige vers la page "inscription_post.php" au lieu de m'amener à la page connexion (et l'inscription est pas prise en compte, j'ai regardé la base de donnée.) Donc même s'il y a eu une progression je comprends toujours pas pourqoi les pages communiques pas entre elle (seule la page deconnexion fait bien son boulot mais les autres font de la dissidence. ^^

                            EN tout cas je vous remercie déjà pour votre aide et je te remercie monkey3d pour ta patience :) si vous voulez que je poste mes codes autres pages je peux 




                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 janvier 2021 à 14:02:02

                              Rassure moi quand tu fais un var_dump(), tu mets bien une variable à l'intérieure style var_dump($ma_variable); ????

                              Et si tu as des erreurs comme tu le dis, tu pourrais les mettre dans le post ?

                              Et si var_dump te donne rien en ayant mis une variable c'est que ta variable est vide. Ce qui est déjà une bonne information.

                              Alors je commercerai pas vérifier ce que donne les variables post dans le script d'inscription ? je vérifierai si c'est ok ensuite le retour de la base de données, etc.

                              C'est la manière courante et systématique de tester et debugger un programme : on procède par étapes et surtout ... on ne change pas tout en même temps.

                              A+

                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 janvier 2021 à 15:04:21

                                Je note que tu n'as toujours pas enlevé htmlspecialchars() comme il te l'a été vivement conseillé… ou/et tu n'es pas allé lire le lien que j'avais fourni, tu n'aurais pas demandé si tu devais l'enlever.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 janvier 2021 à 1:39:53

                                  Ymox a écrit:

                                  Je note que tu n'as toujours pas enlevé htmlspecialchars() comme il te l'a été vivement conseillé… ou/et tu n'es pas allé lire le lien que j'avais fourni, tu n'aurais pas demandé si tu devais l'enlever.


                                  Et bien je laissais par reflexe ... ^^ mais c'est pas ça qui me cause des erreur donc je l'ai laissé un peu bêtement. 

                                  monkey3d a écrit:

                                  Rassure moi quand tu fais un var_dump(), tu mets bien une variable à l'intérieure style var_dump($ma_variable); ????

                                  Et si tu as des erreurs comme tu le dis, tu pourrais les mettre dans le post ?

                                  Et si var_dump te donne rien en ayant mis une variable c'est que ta variable est vide. Ce qui est déjà une bonne information.

                                  Alors je commercerai pas vérifier ce que donne les variables post dans le script d'inscription ? je vérifierai si c'est ok ensuite le retour de la base de données, etc.

                                  C'est la manière courante et systématique de tester et debugger un programme : on procède par étapes et surtout ... on ne change pas tout en même temps.

                                  A+


                                  Oui evidement je mettais une variable dans _var_dump ^^ mais ma page restait blanche donc j'ignore si c'est parce qu'elle est vide ou parce que wamp n'actualise pas correctement (il m'avait déjà causé un souci de ce genre une fois) D'accord donc je recommence et j'y vais petit à petit c'est ça? et je rajoute mon script au fur et à mesure?

                                  En fait quand je fais remplis le formulaire d'inscription j'appuie sur le bouton pour s'inscrire. Sauf qu'au lieu de valider l'inscription et me renvoyer sur la page "connexion.php" j'atterris sur la page inscription_post.php" qui s'avère pour le coup être blanche.... 

                                  EDIT:

                                  Le problème a évolué. J'ai aucun problème à intéragir avec ma base de donnée avant d'ecrire le scirpt php de la page d'inscription. Aucune erreur ne s'affiche. Cependant quand je tente une inscription, celle-ci n'est pas prise en compte et je reste sur la page inscription (avec un message d'erreur dans l'url indiquant une erreur mais ça c'est moi qui l'est mis: "header: Location: inscription.php?reg_err=error_script" )

                                  En fait quand j'appuie sur le bouton pour valider le formulaire il se passe rien et en regardant dans la base de données le membre n'apparait pas.... donc on avance mais malheureusement je suis encore bloqué avec la validation. J'ai à peine touché au script, j'ai enlevé le "htmlspecialchars" et cela n'a rien changé ^^  (en le remettant non plus d'ailleurs) mais tout le reste du formulaire est le même. J'ai éteint et rallumé Wamp juste au cas où mais rien non plus... quelqu'un a une solution?

                                  Est-ce que changer <input/> par <button> changerai quelque chose? 

                                  -
                                  Edité par BenoîtPerussel 17 janvier 2021 à 3:24:48

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 janvier 2021 à 5:47:56

                                    Après le var_dump, tu peux aussi ajouter un exit si tu ne vois pas les traces.

                                    Je ne pense pas que changer input par button serait la solution.

                                    Quand tu valides ton formulaire, arrives tu dans ton script d'inscription ? ... debuggage progressif ...

                                    A+

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 janvier 2021 à 8:26:16

                                      Mets en commentaire toute les redirections sur inscription_post comme cela s'il va des erreurs elles devrais s'afficher à condition de les avoir activé (cf Faq php) 

                                      Ensuite reposte le code de dernier avec les demandes que nous avons fait

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 janvier 2021 à 0:51:45

                                        monkey3d a écrit:

                                        Après le var_dump, tu peux aussi ajouter un exit si tu ne vois pas les traces.

                                        Je ne pense pas que changer input par button serait la solution.

                                        Quand tu valides ton formulaire, arrives tu dans ton script d'inscription ? ... debuggage progressif ...

                                        A+

                                        Alors après des modifications et avec les instruction de mon mentor je suis parvenu effectivement à aller sur la page inscription_post.php. (désolé pour le "htmlspecialchars" encore une fois mais il me l'a présenté ainsi j'ai donc retravaillé le code avec sa base.) donc je valide et le nom que j'ai rentré apparaît maiiiiiiiiis toujours suivi d'un undefined index password... et je comprends toujours pas pourquoi non plus... j'ai l'impression que je vais jamais en voir le bout. (Calude est le nom erntré au hasard dans le formulaire ^^) 

                                         

                                        <?php
                                            $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                        
                                            if(isset($_POST['forminscription'])) {
                                              echo $_POST['nom'];
                                               if(!empty($_POST['nom'])) {
                                                  $nom = htmlspecialchars($_POST['nom']);
                                                  $prenom = htmlspecialchars($_POST['prenom']);
                                                  $pseudo = htmlspecialchars($_POST['pseudo']);
                                                 $pseudolenght = strlen($pseudo);
                                                  $password = htmlspecialchars($_POST['password']);
                                                 $question = htmlspecialchars($_POST['question']);
                                                  $reponse = htmlspecialchars($_POST['reponse']);
                                                  
                                                  if($pseudolenght <= 255) {
                                                     $insert_membre = $bdd->prepare("INSERT INTO membres(nom, prenom, pseudo, password, question, reponse) VALUES(?, ?, ?, ?, ?, ?)");
                                                     $insert_membre->execute(array($nom, $prenom, $pseudo, $password, $question, $reponse));
                                                     $erreur = "Votre compte a bien été crée!";
                                                  } else {
                                                     $erreur = "Votre pseudo ne doit pas dépasser 255 caractères!";
                                                  }
                                               } else {
                                                 
                                                        $erreur = "Tous les champs doivent être remplis!";
                                               }
                                            }
                                        ?> 

                                        ET voila le code retravaillé avec mon mentor (l'indentation c'est son choix...)  j'ai retravaillé les echos voir même enelver et mis les message "$erreur" dans un premier temps avant de m'embarquer dans une redirection de page. et après avoir ajouter le var_dump, voilà à quoi j'ai droit à :


                                        Je vais jamais m'en sortir et la fin de la formation approche... :( Je vois pas en quoi c'est une erreur de syntaxe en plus ^^ 

                                        Mais quand je remplis le formulaire cela créer bien le compte dans la base de donnée. Mais il apparait deux fois... et dans la table, les infos apparaissent sauf le mot de passe.. ^^

                                        Je suis un dépassé par les événements...  :D 



                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 janvier 2021 à 0:59:21

                                          Pour le htmlspecialchar, tu peux lui faire lire la page dans ma signature.

                                          Ensuite sur le formulaire de login, il manque les " autour du name "password"

                                          Tu as écrit "passeword" dans ton formulaire. 

                                          Un var_dump de $_POST pour vérifier que tu obtiens bien les donner voulu

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 janvier 2021 à 1:45:24

                                            Aurélien.C a écrit:

                                            Pour le htmlspecialchar, tu peux lui faire lire la page dans ma signature.

                                            Ensuite sur le formulaire de login, il manque les " autour du name "password"

                                            Tu as écrit "passeword" dans ton formulaire. 

                                            Un var_dump de $_POST pour vérifier que tu obtiens bien les donner voulu

                                            D'accord je lui dirai (sans te citer) et avec le lien envoyé. ^^

                                            Oui c'était une bourde que j'avais déjà corrigé. :)

                                            Du coup bonne nouvelle la page inscription marche et l'inscription est prise en compte dans la base de données! Mais une fois que je suis la page connexion je me prend un fatal error et une PDOexception sur la même ligne qui est la ligne 21... et là je comprends pas vu qu'il s'agit d'un array et il me semble que la bonne variable soit entrée:

                                            <?php
                                                session_start();
                                                try
                                                {
                                                   $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                                }
                                              catch(Exception $e)
                                              {
                                                  die('Erreur' .$e->getMessage()); 
                                              }
                                             
                                            
                                            ?>
                                            
                                            
                                            
                                            <!DOCTYPE html>
                                            <html lang="fr" dir="ltr">
                                                <head>
                                                    <meta charset="utf-8">
                                                    <meta name="viewport" content="width=device-width" />
                                                    <link rel="stylesheet" type="text/css" href="Style2.css">
                                                    <title>GBAF, inscription des adhérents</title>
                                                </head>
                                            
                                                <body>
                                            
                                            
                                            
                                            
                                            
                                                    
                                                     <!-- -->
                                                    <header id="header_form">
                                                        <a href="#"><img src="Images/logoGBAF.png" class="logo_petit" alt="logo de GBAF" /></a>
                                                        
                                                                        </header>
                                                                                
                                                                        
                                                                    <section >
                                                                      
                                                         <div>
                                            
                                                                        <h2>Connexion</h2>
                                            
                                                <br /><br /> 
                                            
                                                        
                                               
                                            
                                                <br />
                                                                       
                                                            <form method="post" action="connexion_post.php">
                                            
                                                            <table> 
                                                            
                                                            <tr>    
                                                                <td align="right">  <label for="pseudo"><strong>Pseudo:</strong> </label> </td>
                                                                <td>                <input type="text" id="pseudo" name="pseudo"/> </td>
                                                            </tr>
                                                            <tr>    
                                                                <td align="right">  <label for="password"><strong>Mot de passe:</strong></label> </td>
                                                                <td >               <input type="password" id="password" name="password"/> </td>
                                                            </tr>
                                                        
                                                                    <td></td>
                                                                    <td>            <input type="submit" name="formconnexion" class="connexion" value="Connexion"/> </td>
                                                                </tr>
                                                            </table>
                                                                                
                                                            
                                            
                                                            </form> 
                                                        <br />  
                                                            
                                            
                                                         </div>
                                            
                                            
                                            
                                            
                                            
                                                                        
                                                                    </section>
                                            
                                                    <footer class="site-footer">
                                                        <p class="mentions">Mentions légales | Contact</p>
                                                    </footer>
                                                </body>
                                            </html>

                                            et du coup la partie PHP:

                                            <?php
                                                session_start();
                                            
                                                try
                                            { 
                                            
                                            $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
                                            }
                                            catch (Exception $e)
                                            {
                                                die('Erreur : '. $e->getMessage());
                                            }
                                            
                                            
                                                            if(isset($_POST['pseudo']) && isset($_POST['password']))
                                                            {
                                                                $pseudo = htmlspecialchars($_POST['pseudo']);
                                                                $password = htmlspecialchars($_POST['password']);
                                            
                                                                $check = $bdd->prepare('SELECT pseudo, password, FROM membres WHERE pseudo = ?');
                                                                $check->execute(array($pseudo));
                                                                $data = $check->fetch();
                                                                $row = $check->rowCount();
                                            
                                                                if($row == 1)
                                                                {
                                                                    $password = hash('password_hash', $password);
                                            
                                                                    if($data['password'] === $password)
                                                                    {
                                                                        $_SESSION['user'] = $data['pseudo'];
                                                                        header('Location:Page-compte.php');
                                            
                                                                    }else header('Location:inscription.php?login?login_err=password');
                                                                }else header('Location: inscription.php?login_err=already');
                                                            }else header('Location:inscription.php');
                                            
                                            
                                            
                                            ?>





                                            -
                                            Edité par BenoîtPerussel 18 janvier 2021 à 5:11:51

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 janvier 2021 à 6:39:01

                                              Quand tu as une erreur ce serait bien de la transmettre dans ton post avec le message d'origine et non nous en faire un résumé incomplet.

                                              Dans le cas, la connexion est-elle bien établie ? $pseudo contient bien ce que tu attends (vérifié) ? enlève la virgule derrière password.

                                              A+

                                              -
                                              Edité par monkey3d 18 janvier 2021 à 6:39:32

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                18 janvier 2021 à 15:47:46

                                                monkey3d a écrit:

                                                Quand tu as une erreur ce serait bien de la transmettre dans ton post avec le message d'origine et non nous en faire un résumé incomplet.

                                                Dans le cas, la connexion est-elle bien établie ? $pseudo contient bien ce que tu attends (vérifié) ? enlève la virgule derrière password.

                                                A+

                                                -
                                                Edité par monkey3d il y a environ 9 heures

                                                Voilà du coup pour les messages d'erreurs :)

                                                A quel 'password"? si c'est celui de la ligne 20 quand je l'enlève je suis redirigé sur ma page d'inscription quand je veux valider mes identifiants... ^^

                                                -
                                                Edité par BenoîtPerussel 18 janvier 2021 à 15:54:18

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  18 janvier 2021 à 15:56:40

                                                  Ok pour le message et en supposant que la ligne 21 est toujours celle de l'instruction execute.

                                                  Mes autres questions en suspend :

                                                  Dans le cas, la connexion est-elle bien établie ? $pseudo contient bien ce que tu attends (vérifié) ? enlève la virgule derrière password.

                                                  A+

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 janvier 2021 à 10:00:43

                                                    monkey3d a écrit:

                                                    Ok pour le message et en supposant que la ligne 21 est toujours celle de l'instruction execute.

                                                    Mes autres questions en suspend :

                                                    Dans le cas, la connexion est-elle bien établie ? $pseudo contient bien ce que tu attends (vérifié) ? enlève la virgule derrière password.

                                                    A+


                                                    La connexion est bien établie avec un "echo" on s'en rend compte! 

                                                    Alors pour la virgule si je l'enlève, quand je tape les identifiants de connexion et que je valide, je tombe sur la page d'inscription... si je la remets je retombe sur les messages d'erreur avec le pseudo affiché juste avant (car comme je l'ai dit j'ai mis un echo pour savoir si la valeur existe et est prise en compte.) o_O

                                                    -
                                                    Edité par BenoîtPerussel 19 janvier 2021 à 10:01:22

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 janvier 2021 à 10:08:55

                                                      Donc la virgule pose bien problème. A enlever comme je te le disais depuis quelques post.

                                                      Ligne 23 fais un var_dump($data) et dis nous ce que tu trouves ... et je parie que la valeur entraîne la partie else de ton if.

                                                      A+

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        20 janvier 2021 à 11:16:31


                                                        monkey3d a écrit:

                                                        Donc la virgule pose bien problème. A enlever comme je te le disais depuis quelques post.

                                                        Ligne 23 fais un var_dump($data) et dis nous ce que tu trouves ... et je parie que la valeur entraîne la partie else de ton if.

                                                        A+


                                                        Et bien figure qu'en en elevant la virgule et en faisant un " var_dump($data) " (sans point-virgule après) j'ai l'erreur suivante:Qui correspond donc à: "   $data = $check->fetch();  "
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          20 janvier 2021 à 11:22:50

                                                          On parle bien de la virgule après password dans la requête ligne 20 du code fourni précédemment ? Parce que pour l'instant et d'après le code fourni, c'est assez certain que si cette virgule reste, la requête va planter.

                                                          L'erreur que tu mentionnes n'est pas possible avec le code sur lequel on se base au moment où j'écris ceci.

                                                          -
                                                          Edité par Ymox 20 janvier 2021 à 11:23:16

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            20 janvier 2021 à 13:09:16

                                                            Ymox a écrit:

                                                            On parle bien de la virgule après password dans la requête ligne 20 du code fourni précédemment ? Parce que pour l'instant et d'après le code fourni, c'est assez certain que si cette virgule reste, la requête va planter.

                                                            L'erreur que tu mentionnes n'est pas possible avec le code sur lequel on se base au moment où j'écris ceci.

                                                            -
                                                            Edité par Ymox il y a environ 1 heure

                                                            monkey3d a écrit:

                                                            Donc la virgule pose bien problème. A enlever comme je te le disais depuis quelques post.

                                                            Ligne 23 fais un var_dump($data) et dis nous ce que tu trouves ... et je parie que la valeur entraîne la partie else de ton if.

                                                            A+

                                                            Alors j'ai tout simplement ré-écrit le code et je me suis appuyé sur tes conseils et ceux des autre et visiblement... ça marche! Pas de virgule qui m'embete et j'atterris bien où je l'ai demandé !!! Je me suis embourbé dans un merdier sans nom et grâce à toi et aux autres cela marche! je sais pas trop comment mais j'ai enlevé des choses dans le code remodifer certaines lignes et visiblement le php s'exécute! 

                                                            JE VOUS REMERCIE INFINIMENT! Monkey3d je te remercie tout particulièrement! j'ai enfin résolu le problème! Je vous suis très reconnaissant! :)

                                                            (j'espère que ça recommencera pas parce que là j'abandonnerai je pense :( ) 



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Gros problèmes pages: 'inscription' et 'connexion'

                                                            × 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