IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création espace membres


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut Création espace membres
    Bonjour tout le monde!
    On m'a demandé de créer un site internet pour une ASBL ("c'est toi qui étudie l'informatique donc c'est toi qui fait!")... Afin d'éviter les débats interminables sur la différence entre étudiant analyste programmeur à finalité industriel (rien que ce terme, je les auraient tous perdu) et un informaticien de gestion, j'ai dit "ok"...
    Sauf que c'est plus dur que ce que je croyais, bref !

    Voici mon problème :
    Je suis en train de faire un espace réservé aux membres de l'ASBL en question sauf que j'ai un problème de connexion à ma BD...
    Pour les infos, je suis en localhost, j'utilise Wamp (la dernière version) avec PHP 5.
    Voici mon code permettant de gérer une inscription :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php 
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=asbl;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }
    catch(Exception $e)
    {
    ****// En cas d'erreur, on affiche un message et on arrête tout
    	die('Erreur : '.$e->getMessage());
    }
     
    // Si la bd s'ouvre, on continue
    // Vérification de la validité des informations
    if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['mail']) AND isset($_POST['pass']) AND isset($_POST['pass2']))
    {
    	$mail = htmlspecialchars($_POST['mail']);
    	$nom = htmlspecialchars($_POST['nom']);
    	$prenom = htmlspecialchars($_POST['prenom']);
    	$pass = htmlspecialchars($_POST['pass']);
    	$pass2 = htmlspecialchars($_POST['pass2']);
     
    	if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
        {
            $reponse = $bdd->prepare('SELECT email FROM membres WHERE mail = :mail');
     
    		if(!$reponse->execute(array( 'mail' => $_POST['mail'])))
    		{
    				echo "L'adresse email saisie existe déjà";
    				header('Location: connexion.php');
    		}
     
    		if($_POST['pass'] == $_POST['pass2'])
    		{
    			// Hachage du mot de passe
    			$pass_hache = sha1($_POST['pass']);
     
    			// Insertion
    			$req = $bdd->prepare('INSERT INTO membres(nom, prenom, email, pass) VALUES(:nom, :prenom, :mail, :pass)');
    			$req->execute(array(
       				'nom' => $nom,
       				'prenom' => $prenom,
       				'mail' => $mail,
       				'pass' => $pass_hache));
    		}
    		else
    		{
    			echo "Les mots de passe ne sont pas identiques";
    			header('Location: inscription.php');
    		}
       }
       else
       {
           echo "L'adresse " . $_POST['mail'] . " n'est pas valide, recommencez !";
           header('Location: inscription.php');
       }
     
    	header('Location: accueil.php');
    }
    else // Il manque des paramètres, on avertit le visiteur
    {
    	echo 'Veuillez remplir tous les champs du formulaire';
    	header('Location: inscription.php');
    }
    Le problème venant du début, dès le "catch", je reçois le message d'erreur : "( ! ) Parse error: syntax error, unexpected 'die' (T_EXIT) in C:\wamp64\www\ASBL\inscriptionTraitement.php on line 9"

    Si vous voyez d'où vient le problème et comment le résoudre, je ne suis pas contre un petit coup de main ;D
    Merci d'avance!

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Les **** en ligne 9 c'est pour marquer la ligne en erreur ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est normal les étoiles à la ligne 5 ?
    Parce que moi avec ce code et wamp, je n'ai pas d'erreur sur die() mais plutôt sur "****"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Non en effet c'est bizarre, c'est en copiant le code que je viens de les voir, c'est vrai que c'est étrange sachant qu'elles n'apparaissent pas dans le code Sublime Text, juste dans le copié-collé :/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Ahahahahahah ridicule comme problème

    Ca venait bien de là, j'ai juste eu deux autres petits problèmes mais rien de fort compliqué juste une variable oubliée dans mon "prepare" de requête et un mauvais nom de variable ;D

    Merci beaucoup!

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    J'en profite pour vous demander si vous n'auriez pas une façon propre d'afficher si la personne est bien connectée, si l'email est déjà dans la BD, si le mot de passe / identifiant est mauvais, ...
    J'avais pensé à un echo() mais vu que je redirige directement via header("Location : X"); ca ne marche pas, j'ai ensuite pensé à insérer du JavaScript (des alert() ) mais je pense pas que le résultat soit exceptionnel non plus :/

    C'est juste une recherche d'idées, ne vous fatiguez pas inutilement pour ça si vous ne voyez pas de trucs possibles :p

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    echo en PHP ou du Javascript c'est la même chose vis à vis de la structure de ton PHP.

    A quel moment a lieu ta redirection ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Oui c'est la même structure, juste qu'un affiche le texte sur la page et l'autre peut le faire en alerte pop-up
    Mais j'ai des headers à chaque "condition terminale" donc, par exemple, pour la connexion, j'ai un header quand le mot de passe / identifiant est faux, pour l'inscription, si l'email existe déjà dans la BD, le mot de passe a écrire 2x ne correspond pas d'un champ à l'autre,...

    Exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(!$reponse->execute(array( 'mail' => $mail)))
    {
    	echo "L'adresse email saisie existe déjà";
    	header('Location: connexion.php');
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    else
    {
    	echo "Les mots de passe ne sont pas identiques";
    	header('Location: inscription.php');
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    else
    {
          echo "L'adresse " . $_POST['mail'] . " n'est pas valide, recommencez !";
          header('Location: inscription.php');
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    else 
    {
    	echo 'Veuillez remplir tous les champs du formulaire';
    	header('Location: inscription.php');
    }
    etc, etc...
    Sauf qu'avec cette structure, je suis redirigé instantanément bien avant d'avoir le moindre message qui s'affiche... c'est pour ca que je pensais mettre un "alert()" après avoir été redirigé mais ce n'est quand même pas très propre comme affichage d'erreurs, y-a-t'il une méthode plus propre? (je me doute que oui mais je suis débutant avec les langages pour le dev web :/ )

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux passer l'erreur en argument pour l'afficher dans la page de destination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: inscription.php?error=badpassword');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    Pas bête du tout!
    j'avoue y avoir pensé (pas ça exactement mais dans l'idée :p ) mais je ne savais pas si c'était possible ou non x)
    Mais merci! je vais me renseigner sur le sujet!

    Mais je sais que la question va paraître stupide mais je suis (comme dit plus haut) un débutant pour ces langages dev web mais comment peut-on récupérer la variable "error"? Par PHP? JavaScript? Un des deux, au choix?

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $arError = array(
       'badpassword'=>'Le mot de passe est incorrect',
       'passwordmismatch'=>'Les deux mots de passe ne sont pas identiques'
    )
     
    if (isset($_GET['error'], $arError[$_GET['error']])) {
        echo '<p>' . $arError[$_GET['error']] . '</p>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 59
    Points : 19
    Points
    19
    Par défaut
    ah ok simplement x)
    Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Probléme de création Espace Membre
    Par BellemyGuerdy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2016, 15h00
  2. [MySQL] création d'un espace membre
    Par zup17 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/02/2011, 14h20
  3. Création d'un espace membre
    Par zoneech dans le forum Langage
    Réponses: 16
    Dernier message: 24/12/2008, 20h07
  4. [MySQL] Aide création espace membre
    Par serialchris972 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/08/2008, 02h11
  5. Réponses: 4
    Dernier message: 20/02/2007, 04h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo