Partage
  • Partager sur Facebook
  • Partager sur Twitter

Espace membre - erreur signalée introuvable

Sujet résolu
    25 mars 2019 à 17:24:06

    Bonjour,

    Je travaille sur le code ci-dessous :

    <?php
    
            if(!empty($_POST)) {
                   /*Création d'un tableau pour stocker les erreurs */
                   
                   $errors=[];
                   
                   
                   /* Assignation des variables */
                   
                   $username=$_POST['username'] ?? null;
                   $password=$_POST['password'] ?? null;
                   $confirm_password=$_POST['confirm_password'] ?? null;
                   $email=$_POST['email'] ?? null;
                   
                   if(empty($username) || empty($password) || empty($confirm_password) || empty($email)) {
                     $errors[] = "All fields should be filled in";
                   }
                   
                   $usernamesize=mb_strlen($username);
                   if($usernamesize<7 || $usernamesize>30) {
                   
                       $errors[]='Please enter an username containing between 7 and 30 characters';
                   }
                   
                   $passwordsize=mb_strlen($password);
                   if($passwordsize<7 || $passwordsize >30) {
                       
                       $errors[]='Please enter a password containing betwwen 7 and 30 characters';
                   }
                   
                   if($password !== $confirm_password){
                       $errors[]='Please re-enter your password, both passwords do not match';
                   }
                   
                   if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                       $errors[]='Please enter a valid email';
                   }
                   
                   /* Vérification de l'email : existe t'il ? */
                   
                   if(empty($errors)){
                     
                            try 
                                {
                                    $db=new PDO('mysql: host=localhost; dbname=new_members_area; charset=utf8', '', '', array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
                                }
    
                            catch(Exception $e)
                                
                                {
                                    die('Erreur ' .$e ->getMessage());
                                }
                       
                       
                       $reqSelectUser = $db->prepare('SELECT id FROM members WHERE email= :email');
                       $reqSelectUser->execute([
                           ':email'=>$email
                         ]);
                       $user=$reqSelectUser->fetch();
                       
                        if($user){
                            $errors[]='This email is already being used by a member';
                        }
                   }
                
                /* S'il n'y a pas d'erreur */
                
                if(empty($errors)) {
                    $passwordhash= password_hash($password, PASSWORD_DEFAULT, [
                        'cost' => 14
                    ]);
                    
                    $reqInsert=$db->prepare('INSERT INTO members(username, email, password, remember_token) VALUES(:username, :email, :password, NULL)');
                    $reqInsert->execute([
                        ':username'=>$username;
                        ':email'=>$email;
                        ':password'=>$passwordhash
                    ]);
                    
                    //redirection et confirmation que l'inscription est prise en compte 
                    
                    echo 'Registration done';
                   /* header('location:https://www.google.com');*/
                } else {
                   echo 'Registration is not completed, you are not a registered member.';
                    var_dump($errors);
                }            
               }
        ?>

    A toutes fins utiles, voici le code html qui précéde le code PHP dans ma page :

    <!DOCTYPE html>
    	<html lang="en">
    		<head>
    			<meta charset="utf-8">
    			<meta name="viewport" content="width=device-width, initial-scale=1"/>
    			 <link rel="stylesheet" href="style.css" />
    			<title> Be part of our community! Join us now! </title>
    		</head>
    
    
    		<body>
                
                <!-- CODE HTML DU FORMULAIRE -->
                
                <h1>Beautiful World</h1>
                
                <h2> Welcome to the globetrotters' website ! </h2> <br/>
                
                
                <form method="post" action="subscription.php">
                    
                    <h3> SUBSCRIPTION </h3>
                   
                   <table>
                    <p> <bold> Pour vous inscrire, veuillez remplir l'ensemble des champs suivants :  </bold> <br/> </p>
                               
                        <tr>
                            <td>
                                <label for="username"> Username : </label> 
                            </td>
                            
                            <td> 
                                <input type="text" id="username" name="username" title="Please use one or more alphanumerical character then use maximum 9 alphanumerical or . - _ characters. This field should contain between 5 and 10 characters" placeholder="Your username"  required/> <br/>
                            </td>
                        </tr>
                            
                        <tr>
                            <td>
                                <label for="email">Your email : </label> 
                            </td>
                            
                            <td>
                                <input type="email" id="email" name="email" placeholder="Your email" required/> <br/>
                            </td>
                        </tr> 
                            
                       <tr>
                           <td>
                               <label for="password">Your password : </label> 
                           </td>
                          
                           <td>
                               <input type="password" id="password" name="password" placeholder="Your password" required/> <br/>
                           </td>
                        </tr>
                        
                        <tr>
                            <td>                       
                                <label for="confirm_password">Please enter again your password : </label> 
                            </td>
                             
                            <td>
                                <input type="password" id="confirm_password" name="confirm_password" placeholder="Your password" required/> <br/>
                            </td>
                        </tr>
                       
                        
                    <tr>
                        <td>
                          
                        </td>
                        
                        <td>
                            <input type="submit" name="forminscription" value="I wish to subscribe"/> 
                        </td>
                     </tr>
                            
                    </table>                               
                </form>
                    
    
            </body>
            
    </html>
    

    Lorsque j'ouvre la page dans mon navigateur, j'ai le message d'erreur suivant : "Parse error, syntax error, unexpected ";", expecting ']'... on line 164 (':username'=>$username;)"

    Pourtant, je ne vois pas pourquoi je devrais mettre un crochet à ce niveau là. Je sais que l'erreur n'est pas forcément toujours là où elle est indiquée. Mais je viens de relire tout mon code à trois reprises, j'ai utilisé Sandbox et PHPTester et j'obtiens étrangement toujours la même notification d'erreur. Et je n'ai toujours rien trouvé...

    Pourriez-vous m'aider et m'expliquer ce qui cloche s'il vous plait ? Merci beaucoup.

    Bonne soirée.

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2019 à 17:32:02

      Salut,

      l'erreur vient bien de l'endroit indiquée:

      $reqInsert->execute([
                          ':username'=>$username;
                          ':email'=>$email;
                          ':password'=>$passwordhash
                      ]);

      Tu dois mettre des "," et non des ";" pour séparer tes lignes dans un array

      $reqInsert->execute([
                          ':username'=>$username,
                          ':email'=>$email,
                          ':password'=>$passwordhash
                      ]);




      -
      Edité par Ralchimist 25 mars 2019 à 17:32:14

      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2019 à 17:59:38

        Salut Ralchimist,

        Merci pour tes lumières, je dois fatiguer, je n'avais pas vu mon erreur, deux virgules après trois lectures, je crois que j'ai besoin d'une pause ! :(

        Merci et bonne soirée.

        • Partager sur Facebook
        • Partager sur Twitter

        Espace membre - erreur signalée introuvable

        × 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