[PHP] Besoin d'aide pour résoudre un message d'erreur

Besoin d'aide pour résoudre un message d'erreur [PHP] - PHP - Programmation

Marsh Posté le 28-02-2016 à 14:01:31    

Bonjour, donc voilà hier j'ai voulut sécurisé mon inscription pour mon forum et là je reçois un message d'erreur donc j'ai corrigé ce que j'ai trouvé de faux, mais après je suis perdue, je continue a avoir une erreur .
 
Voici l'erreur : (!) Parse error: syntax error, unexpected '}' in C:\Apache24\htdocs\NextGeek\site\Forum\inscription\inscription.php on line 14
 
Voici mon code PHP :

Citation :

<?php
   if(!empty($_POST)){
   
  $errors = array();
   
  if(empty($_POST['identifiant']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['identifiant'])){
   $errors['identifiant'] = "Votre identifiant n\'est pas valide (Alphanumérique)";
     }else {
   $req = $pdo->prepare('SELECT id FROM user WHERE identifiant = ?');
   $req->execute([$_POST['identifiant']]);
   $user = $req->fetch();
   if($user){
    $errors['identifiant'] = 'Cette identifiant est déjà pris'
   }
  }
  if(empty($_POST['mail']) || filter_var($_POST['mail'], !FILTER_VALIDATE_EMAIL)){
   $errors['mail'] = "Votre E-mail n\'est pas valide"
  }else {
   $req = $pdo->prepare('SELECT id FROM user WHERE mail = ?');
   $req->execute([$_POST['mail']]);
   $user = $req->fetch();
   if($user){
    $errors['mail'] = 'Cette E-mail est déjà utilisé'
  }
   
  if(empty($_POST['motdepasse']) $_POST['motdepasse'] != $_POST['motdepasse_confirmation']){
   $errors['motdepasse'] = "Vous devez rentrer un mot de passe valide";
  }
  if(empty($errors)){
   require_once 'BD.php'
   $req = $pdo->prepare"INSERT INTO user SET identifiant = ?, motdepasse = ?, mail = ?, confirmation_token = ?" );
   $motdepasse = password_hash($_POST['motdepasse'], PASSWORD_BCRYPT);
   $token = str_random(60);
   $user_id = $pdo->lastInsertId();
   $req->execute([$_POST['identifiant'], $motdepasse, $_POST['mail']])
   mail($_POST['mail'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nlocalhost/NextGeek/site/Forum/inscription/Rinscription.php?id=$user_id&token=$token" )
   header('Location: ../connexion/connexion.php')
   die('Votre compte a bien été crée')
  }
   
  debug($errors);
   
   }
   }


 
Merci d'avance .

Reply

Marsh Posté le 28-02-2016 à 14:01:31   

Reply

Marsh Posté le 28-02-2016 à 14:42:40    

Salut
unexpected '}' c'est que tu aw une } en trop.  
 
Vérifie ;)


---------------
Topic Ach/Vds/Ech jeux vidéo
Reply

Marsh Posté le 28-02-2016 à 15:20:35    

D'accord je vais regarder ça :)

Reply

Marsh Posté le 28-02-2016 à 16:31:40    

Donc j'ai enlever l'accolade ligne 14 et ligne 15 comme il me la demander, mais ensuite c'est un problème avec la ligne de 16 :  
Parse error: syntax error, unexpected 'if' (T_IF) in C:\Apache24\htdocs\NextGeek\site\Forum\inscription\inscription.php on line 16

Reply

Marsh Posté le 28-02-2016 à 17:02:12    

Code :
  1. <?php
  2.    if(!empty($_POST)){
  3.    $errors = array();
  4.  
  5.    if(empty($_POST['identifiant']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['identifiant'])){
  6.     $errors['identifiant'] = "Votre identifiant n\'est pas valide (Alphanumérique)";
  7.     }else {
  8.      $req = $pdo->prepare('SELECT id FROM user WHERE identifiant = ?');
  9.      $req->execute([$_POST['identifiant']]);
  10.      $user = $req->fetch();
  11.      if($user){
  12.       $errors['identifiant'] = 'Cette identifiant est déjà pris';
  13.    }
  14.   }
  15.   if(empty($_POST['mail']) || filter_var($_POST['mail'], !FILTER_VALIDATE_EMAIL)) {
  16.    $errors['mail'] = "Votre E-mail n\'est pas valide";
  17.    }else {
  18.     $req = $pdo->prepare('SELECT id FROM user WHERE mail = ?');
  19.     $req->execute([$_POST['mail']]);
  20.     $user = $req->fetch();
  21.     if($user){
  22.      $errors['mail'] = 'Cette E-mail est déjà utilisé';
  23.     }
  24.    if(empty($_POST['motdepasse']) $_POST['motdepasse'] != $_POST['motdepasse_confirmation']) {
  25.      $errors['motdepasse'] = "Vous devez rentrer un mot de passe valide";
  26.    }
  27.    if(empty($errors)) {
  28.     require_once 'BD.php';
  29.     $req = $pdo->prepare("INSERT INTO user SET identifiant = ?, motdepasse = ?, mail = ?, confirmation_token = ?" );
  30.     $motdepasse = password_hash($_POST['motdepasse'], PASSWORD_BCRYPT);
  31.     $token = str_random(60);
  32.     $user_id = $pdo->lastInsertId();
  33.     $req->execute([$_POST['identifiant'], $motdepasse, $_POST['mail']]);
  34.     mail($_POST['mail'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nlocalhost/NextGeek/site/Forum/inscription/Rinscription.php?id=$user_id&token=$token" );
  35.     header('Location: ../connexion/connexion.php');
  36.     die('Votre compte a bien été crée');
  37.    }
  38.  debug($errors);
  39.  }
  40.    }
  41. ?>
 

Edit : je n'ai fait qu'indenter ton code ... et rajouter des ; là où tu n'en avais pas !


Message édité par Buldozerben le 29-02-2016 à 10:31:26

---------------
Topic Ach/Vds/Ech jeux vidéo
Reply

Marsh Posté le 29-02-2016 à 10:05:40    

Clair : y'a de nombreuses lignes où il manque un ; à la fin :/
L12, 16, 22, ...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-02-2016 à 10:31:43    

:o fatigue :lol:


---------------
Topic Ach/Vds/Ech jeux vidéo
Reply

Marsh Posté le 29-02-2016 à 15:52:39    

Merci de votre aide :)

Reply

Marsh Posté le 01-03-2016 à 19:52:45    

Bonjour,  
Tu développes avec quel outil ?
Tes questions me font penser que tu utilises un bête bloc note, je ne connais pas les IDE PHP mais je suis sûr qu'il y en a de très bien qui permettent d'identifier et corriger très rapidement les problèmes d'équilibrage d'accolade et te faciliter la lecture de ton code.
Le plus connu en gratuit est Netbeans mais il y en a d'autres, et des plus légers.  
Des traitements de texte évolués comme Sublime text doivent également comporter des fonctions bien pratiques.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 01-03-2016 à 20:03:45    

Je développe avec Sublime text, mais je débute dans le PHP donc je fais souvent des erreurs stupide :/

Reply

Marsh Posté le 01-03-2016 à 20:03:45   

Reply

Marsh Posté le 01-03-2016 à 20:07:56    

Par contre grâce a votre aide j'ai pu par la suite corrigé de nombreuses erreur et là il m'en remet une que je ne comprend pas, pouvez vous m'aider s'ils vous plaît ?

 

Cette fois-ci c'est par rapport au token de validation par e-mail :

 

Parse error: syntax error, unexpected '$user_id' (T_VARIABLE) in C:\wamp\www\NextGeek\site\Forum\inscription\Rinscription.php on line 3

 

Le code de Rinscription.php :

 
Citation :

<?php

 

        $user_id = $_GET['id'];
  $token = $_GET['token'];

 

 require_once 'BD.php'
  $req = $pdo->prepare('SELECT confirmation_token FROM user WHERE id = ?');
  $req->execute ([$user_id]);
  $user = $req->fetch();
 
  if($user && $user->confirmation_token == $token){
   session_start();
   $pdo->prepare('UPDATE user SET confirmation_token = NULL, confirmed_at = NOW() WHERE id = ?')->execute([$user_id]);
   $_session['auth'] = $user;
   header('Location: ../connexion/connexion.php');
  }else{
   die('Le token n\'est pas valide');
 
  }


Message édité par Ciwiel le 01-03-2016 à 20:15:19
Reply

Marsh Posté le 01-03-2016 à 20:09:58    

Problème résolue encore des oublies.. le require ('BD.php') sans ; désolé du dérangement :p

Reply

Marsh Posté le 01-03-2016 à 20:32:02    

Je renouvelle mon conseil de passer par un IDE.
 
Ainsi qu'un outil qui permet de comparer un fichier avant et après modification, comme ça si tu casses quelque chose d'une version à l'autre tu peux rapidement trouver quoi (à condition d'avoir gardé une copie de la version originale bien sûr).  
Si tu es sous windows il y a le vieillissant mais toujours vaillant Winmerge par exemple !


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 01-03-2016 à 21:12:45    

TotalRecall a écrit :

Je renouvelle mon conseil de passer par un IDE.
 
Ainsi qu'un outil qui permet de comparer un fichier avant et après modification, comme ça si tu casses quelque chose d'une version à l'autre tu peux rapidement trouver quoi (à condition d'avoir gardé une copie de la version originale bien sûr).  
Si tu es sous windows il y a le vieillissant mais toujours vaillant Winmerge par exemple !


 
Je vais aller regarder ça tout de suite :)

Reply

Marsh Posté le 11-03-2016 à 09:10:08    

T'as oublié le point virgule ligne 13

Reply

Marsh Posté le 14-03-2016 à 23:00:02    

Notepad++ est ton ami

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed