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 :

Espace membre en php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut Espace membre en php
    Bonsoir et bonne année,

    Voilà le formulaire de connexion de mon site et la connexion à la base de donnée, tout fonctionne bien.

    Code html : 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
     
    <?php include("page.php"); ?>
    <?php include("menu.php"); ?>
    <?php include("bdd/identifiant.php"); ?>
    <?php include("bdd/connecter.php"); ?>
     
     
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Connexion</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    	</head>
     
    	<body>
    	<form id="connexion" method = "POST" action="">
    		<!--Permet de créer les champs d'écritures -->
    		<fieldset>
    			<legend>Connexion</legend>
    			<label for="pseudo">Pseudo <em>*</em></label>
    			<input type="text" name="pseudo" placeholder="Pseudo"  required  pattern="^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$"><br>
    			<label for="mdp">Mot de passe <em>*</em></label>
    			<input type="password" name="mdp" placeholder="Mot de passe" ><br>
    		</fieldset>
    		<center><p><input value="" type="submit" name="submit2" id="submit2"></p></center>
    	</form>
    </html>

    Code php : 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
     
    <?php
    if(isset($_POST['submit2']))
    {
    	//Connexion au serveur
    	$connexion = mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
    	}
     
    	// Les différents input
        $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = ? AND mdp =?';
     
        // Exécution de la requête
        $prepa = mysqli_prepare($connexion, $req);				//Préparation de la requète.
        mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp);		//Lie les variables à la requête précédement inscrite.
        $prepa->execute();								//Execution de la requete.
        $resultat = mysqli_stmt_fetch($prepa);				//Retourne le résultat de la requête.
     
    	if (!$resultat)
    	{
    	    echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>';
    	}
    	else
    	{
    	    session_start();
    	    $_SESSION['pseudo'] = $pseudo;
    	    echo '<center><p>Vous êtes connecté en tant que '. $pseudo .' </center></p><br>';
    	}
    }
    ?>

    J'aimerais maintenant que, lorsque l'utilisateur se connecte, au lieu d'afficher seulement "Vous êtes connecté en tant que mon pseudo", il m'affiche un nouveau lien dans le menu ("mon compte" par exemple) ou il aura accès à ses informations personnels précédemment inscrite dans le formulaire d'inscription :


    Code html : 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <?php include("page.php"); ?>
    <?php include("menu.php"); ?>
    <?php include("bdd/inscriptionBD.php"); ?>
     
     
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Inscription</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    		<script type="text/javascript" src="librairies/jquery.js"></script>
    		<script type="text/javascript" src="scripts/script.js"></script>
    		<script type="text/javascript" src="scripts/cacher.js"></script>
    	</head>
     
    	<body>
    	<center><a href="#" id="toggler">Afficher l'aide</a></center>
    		<div id="toggle" style="accueil"><center>
    		- Les champs suivi d’un "<em>*</em>" sont obligatoires.<br>
    		- Les identifiants vous permettront de vous connecter à votre espace membre.<br>
    		- Sélectionner votre date de naissance pour que votre catégorie apparaisse.<br>
    		- Sélectionner si vous possédez une licence ou non, si oui, il vous faudra écrire le nom de votre club ainsi que votre numéro de licence.<br>
    		- Enfin, choisissez si vous voulez organiser une course ou si vous voulez être coureur d’une course.<br>
    		- <b><font color="red">Attention ! Un organisateur ne peut pas participer à la course qu’il a créée.<br></font></b>
    	</div></center>
     
    		<form id="formulaire" method = "POST" action="">
    		<!--Permet de créer les champs d'écritures -->
    		<fieldset>
    			<legend>Mes identifiants</legend>
    			<label for="pseudo">Pseudo <em>*</em></label>
    			<input type="text" name="pseudo" placeholder="Pseudo" required pattern="^[a-zA-Z][a-zA-Z0-9-_\.]{3,20}$" oninvalid="setCustomValidity('Veuillez entrer un pseudo d\'au moins 4 caractères.')" onchange="try{setCustomValidity('')}catch(e){}" / ><br>
    			<label for="mdp">Mot de passe <em>*</em></label>
    			<input type="password" name="mdp" placeholder="Mot de passe" required pattern="^.{6,}$" oninvalid="setCustomValidity('Votre mot de passe doit contenir au moins 6 caractères')" onchange="try{setCustomValidity('')}catch(e){}" /><br>
    			<label for="rmdp">Répéter mot de passe <em>*</em></label>
    			<input type="password" name="rmdp" placeholder="Répéter mot de passe" required pattern="^.{6,}$"><br>
    			<label for="email">Email <em>*</em></label>
    			<input name="email" placeholder="exemple@domain.com" type="text" title="email" pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}" required oninvalid="setCustomValidity('Veuillez entrer une adresse mail valide.')" onchange="try{setCustomValidity('')}catch(e){}" /><br>
    		</fieldset>
     
     
    		<fieldset>
    			<legend>Informations personnelles</legend>
    			<label for="nom">Nom <em>*</em></label>
    			<input type="text" name="nom" placeholder="Nom" required pattern="^[a-zA-Z][a-zA-Z-_\.]{1,20}$"><br>
    			<label for="prenom">Prénom <em>*</em></label>
    			<input type="text" name="prenom" placeholder="Prénom" required pattern="^[a-zA-Z][a-zA-Z-_\.]{1,20}$"><br>
    			<label for="annee"> Année de naissance <em>*</em></label>
    			<select name="annee" id="annee" required onChange="menuToSpan(this.options[this.selectedIndex]);">
    				<option value="">---------</option>
    				<?php
                                    for ($k = date('Y') ; $k > 1929 ; $k--)
                                    {
                                            echo '<option value="'.$k.'">'.$k.'</option>';
                                    } 
                                    ?>
    			</select>
    			<label for="sexe">Sexe <em>*</em></label>
    				<select name="sexe" required>
    					<option value="">Sexe</option>
    					<option value="Masculin" name="sexe">Masculin</option>
    					<option value="Féminin" name="sexe">Féminin</option>
    				</select><br>
    			<label for="adresse">Adresse</label>
    			<input name="adresse" placeholder="Adresse"><br>
    			<label for="cp">Code Postal <em>*</em></label>
    			<input name="cp" placeholder="Code Postal" required pattern="[0-9]{5}" oninvalid="setCustomValidity('Ne doit contenir que 5 chiffres.')" onchange="try{setCustomValidity('')}catch(e){}" /><br>
    			<label for="ville">Ville <em>*</em></label>
    			<input name="ville" placeholder="Ville" required pattern="[a-zA-Z]+"><br>
    			<label for="telephone">Téléphone</label>
    			<input name="telephone" placeholder="Téléphone"><br>
    		</fieldset>
     
    		<fieldset>
    			<legend>Choisissez vos préférences</legend>
    			<label for="categorie">Catégorie</label>
    			<input name="categorie" placeholder="Catégorie" id="categorie" readonly><br>
    			<label for="type_licence">Type de licence <em>*</em></label>
    				<select name="type_licence" id="type_licence" onchange="checkSelection( this )" required>
    					<option value="">---------</option>
    					<option value="Non licencié FFA" name="type_licence1">Non licencié FFA</option>
    					<option value="Entreprise FFA" name="type_licence2">Entreprise FFA</option>
    					<option value="Compétition FFA" name="type_licence3">Compétition FFA</option>
    				</select><br>
    			<label for="club">Club</label>
    			<input name="club" id="club" disabled required oninvalid="setCustomValidity('Veuillez inscrir votre club si vous possedez une licence.')" onchange="try{setCustomValidity('')}catch(e){}" /><br>
    			<label for="licence">Numéro de licence</label>
    			<input name="licence" id="licence" disabled required oninvalid="setCustomValidity('Veuillez inscrir votre numéro de licence')" onchange="try{setCustomValidity('')}catch(e){}" /><br>
    			<label for="compte">Type de compte <em>*</em></label>
    				<select name="compte" required oninvalid="setCustomValidity('Voulez vous être coureur ou organisateur ?')" onchange="try{setCustomValidity('')}catch(e){}" />
    					<option value="">---------</option>
    					<option value="Organisateur" name="compte">Organisateur</option>
    					<option value="Coureur" name="compte">Coureur</option>
    				</select><br>
    		</fieldset>
     
    		<center><p><input src="image/06.png" value="" type="submit" name="submit" id="submit"></p></center>
    		</form>
    		</div> <!--Ferme le cadre dans page.php-->
    	</body>
    </html>

    Ainsi il pourra y modifier quelques une de ses informations.

    Merci de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    J'ai pensé à redéfinir un "autre site", en gros ajouter "header('Location: accueil2.php');" et y mettre un nouveau menu etc etc ...

    C'est la bonne solution ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['pseudo'] = $pseudo;
    Tu peux ajouter un statut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['statut'] = true; // ou 1
    Et dans tes pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php // en haut du fichier
    if( empty($_SESSION['statut']) ){ 
       $_SESSION['statut'] = false; // par défaut
    }
     
    // où tu as besoin
    if( $_SESSION['statut'] ){ // si connecté
     
       // ici, ce que tu veux afficher, si connecté.
     
    }

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse,

    J'ai ajouté ce que tu m'as proposé dans mon fichier de connexion :


    Code php : 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
    <?php
    if(isset($_POST['submit2']))
    {
    	//Connexion au serveur
    	$connexion = mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
    	}
     
    	// Les différents input
        $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = ? AND mdp =?';
     
        // Exécution de la requête
        $prepa = mysqli_prepare($connexion, $req);				//Préparation de la requête.
        mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp);		//Lie les variables à la requête précédemment inscrite.
        $prepa->execute();								//Exécution de la requête.
        $resultat = mysqli_stmt_fetch($prepa);					//Retourne le résultat de la requête.
     
    	if (!$resultat)
    	{
    	    echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>';
    	}
    	else
    	{
    	    session_start();
    	    $_SESSION['pseudo'] = $pseudo;
    	    $_SESSION['statut'] = true;
    	    header('Location: index.php');
    	}
    }
    ?>


    J'aimerais que lorsque que l'utilisateur soit rediriger à l'accueil qu'il est accès à des nouvelles fonctions du menu.

    J'ai ajouté les lignes que tu as inscrites en haut de mon fichier d'accueil :


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    if( empty($_SESSION['statut']) )
    { 
    	$_SESSION['statut'] = false;
    }
     
     
    if( $_SESSION['statut'] )
    {
    	$_SESSION['statut'] = true;
    	echo "Bonjour Mr";
    }
    ?>

    Mais il n'affiche même pas le echo que j'ai paramétré.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Je viens de réussir merci !

    J'ai ajouté un autre menu, mon fichier menu.php est à présent comme ceci :

    Code php : 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
    <?php
    session_start();
    if (isset($_SESSION['pseudo']))
    {
    	echo '<div id="cssmenu">
    	<ul>
    	   <li><a href="index.php"><span>Accueil</span></a></li>
    	   <li><a href="compte.php"><span>Compte</span></a></li>
    	   <li><a href="deconnexion.php"><span>Déconnexion</span></a></li>
    	   <li><a href="contact.php"><span>Contact</span></a></li>
    	</ul>
    	</div>';
    }
    else
    {
    	echo '<div id="cssmenu">
    	<ul>
    	   <li><a href="index.php"><span>Accueil</span></a></li>
    	   <li><a href="inscription.php"><span>Inscription</span></a></li>
    	   <li><a href="connexion.php"><span>Se connecter</span></a></li>
    	   <li><a href="contact.php"><span>Contact</span></a></li>
    	</ul>
    	</div>';
    }
    ?>

    Comme j'inclus ce fichier à chacune de mes pages, ne n'insère pas la variable session à chaque fois;

    J'aimerais maintenant que lorsque un utilisateur se connecte, qu'il ne puisse pas accéder à la page inscription et à la page de connexion et je voudrais aussi afficher constamment son pseudo sur le site tant qu'il est connecté.

    J'ai aussi le problème que l'utilisateur peut accéder à la page compte sans être connecté.

  6. #6
    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 la même chose pour toute tes questions, il faut mettre des conditions if sur l'existence de la session ou non.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    C'est exactement ça j'ai résolu mon problème en faisant, par exemple pour la page de connexion, tel quel :

    Code php : 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
    <?php
    	if(isset($_SESSION['pseudo']))
    	{
    		header('Location: index.php');
    		echo "<script>alert(\"Vous êtes déjà connecté.\")</script>"; 
    	}
    ?>
     
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Connexion</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    	</head>
     
    	<body>
    	<form id="connexion" method = "POST" action="">
    		<!--Permet de créer les champs d'écritures -->
    		<fieldset>
    			<legend>Connexion</legend>
    			<label for="pseudo">Pseudo <em>*</em></label>
    			<input type="text" name="pseudo" placeholder="Pseudo"  required  pattern="^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$"><br>
    			<label for="mdp">Mot de passe <em>*</em></label>
    			<input type="password" name="mdp" placeholder="Mot de passe" ><br>
    		</fieldset>
    		<center><p><input value="" type="submit" name="submit2" id="submit2"></p></center>
    	</form>
    </html>

    Le truc est que, si je tape dans la barre d'adresse, le lien vers le formulaire de connexion, je suis directement redirigé vers l'accueil sans aucun message or, j'ai mis une alerte mais celle-ci ne s'affiche pas.

  8. #8
    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 ne peux évidemment pas à la fois changer de page et afficher un message.
    Tu peux mettre un événement retardé en javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Mettre une page intermédiaire seulement pour les utilisateurs qui durera 3 secondes (comme lorsque l'on se connecte sur ce site) est compliqué à réaliser ?

  10. #10
    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 juste une ligne de javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Code php : 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
     
    <?php
    	session_start();
    	if(isset($_SESSION['pseudo']))
    	{
    		//Code HTML ci-dessous.
    	}
    	else
    	{
    		echo "<script>alert(\"Connectez vous ! Vous allez être redirigé vers la page de connexion.\")</script>";
    		header('Refresh: 0; connexion.php');
    	}
     
    ?>
     
    <?php include("commun/page.php"); ?>
    <?php include("commun/menu.php"); ?>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    	</head>
    </html>

    Ce code m'affiche pour ma page "Mon compte" m'affiche pendant une fraction de seconde la page puis va au formulaire de connexion. Je ne sais pas de quel ligne de code tu parles sabotage ^^' ...

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Je crois avoir trouvé :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		echo "<script>alert(\"Connectez vous ! Vous allez être redirigé vers la page de connexion.\")</script>";
    		echo "<SCRIPT>document.location.href='connexion.php'</SCRIPT>";

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    C'était bien ça, une alerte avant d'atterrir sur la page, merci beaucoup !

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si tu as suivi ce que j'ai écrit plus haut,
    $_SESSION['statut'] vaut :
    • "false" par défaut (ou quand non connecté)
    • "true" si connecté

    Donc, il faut tester si elle est "true" ou pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $_SESSION['statut'] ){
    qui veut dire la même chose que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $_SESSION['statut'] == true ){
    Voire même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( !empty($_SESSION['pseudo']) && $_SESSION['statut'] ){
    identifiant.php :
    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
    <?php
    // on défini les valeurs par défaut
    if( !isset($_SESSION['pseudo']) ){ 
       $_SESSION['pseudo'] = ''; 
    }
    if( !isset($_SESSION['statut']) ){ 
       $_SESSION['statut'] = false; 
    }
     
    if(isset($_POST['submit2']))
    {
    	//Connexion au serveur
    	$connexion = mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
    	}
     
    	// Les différents input
        $pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
     
    	// Vérification des identifiants
    	$req = 'SELECT id FROM `bdd`.`inscription` WHERE pseudo = ? AND mdp =?';
     
        // Exécution de la requête
        $prepa = mysqli_prepare($connexion, $req);			//Préparation de la requète.
        mysqli_stmt_bind_param($prepa ,'ss', $pseudo, $mdp);	//Lie les variables à la requête précédement inscrite.
        $prepa->execute();									//Execution de la requete.
        $resultat = mysqli_stmt_fetch($prepa);				//Retourne le résultat de la requête.
     
    	if (!$resultat)
    	{
    	    $_SESSION['pseudo'] = '';
    	    $_SESSION['statut'] = false;
    	    echo '<center><p id="mauvais">Mauvais identifiant ou mot de passe !</center></p><br>';
    	}
    	else
    	{
    	    $_SESSION['pseudo'] = $pseudo;
    	    $_SESSION['statut'] = true;
    	    echo '<center><p>Vous êtes connecté en tant que '. $pseudo .' </center></p><br>';
    	}
    }
    ?>
    page :
    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
    <?php
    	session_start(); // toujours au tout début du fichier (UNE SEULE FOIS, includes compris)
    	include("page.php");
    	include("menu.php");
    	include("bdd/identifiant.php");
    	include("bdd/connecter.php");
    ?>
     
    <?php
    	if( !empty($_SESSION['pseudo']) && $_SESSION['statut'] ){
    ?>
    		-> du code, si le membre est connecté
    <?php
    	}
    ?>
    Dernière modification par Invité ; 01/01/2015 à 22h03.

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut Afficher les données d'un membre
    Bonsoir,

    J'aimerais pouvoir afficher dans une page "Mon compte" les informations de l'utilisateur connecté.

    Voilà l'inscription de mon formulaire dans la base de donnée :

    Code php : 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?php
    include "BDD/identifiant.php"; 
    require ("class/class.phpmailer.php");
     
    if(isset($_POST['submit']))
    {
    	include "connexionBD.php";
     
    	//Les différents input.
     	$pseudo = utf8_decode($_POST['pseudo']);
    	$mdp = sha1($_POST['mdp']);
    	$rmdp = sha1($_POST['rmdp']);
    	$email = utf8_decode($_POST['email']);
    	$nom = utf8_decode($_POST['nom']);
    	$prenom = utf8_decode($_POST['prenom']);
    	$annee = ($_POST['annee']);
    	$sexe = utf8_decode($_POST['sexe']);
    	$adresse = utf8_decode($_POST['adresse']);
    	$cp = utf8_decode($_POST['cp']);
    	$ville = utf8_decode($_POST['ville']);
    	$telephone = utf8_decode($_POST['telephone']);
    	$categorie = utf8_decode($_POST['categorie']);
    	$type_licence = utf8_decode($_POST['type_licence']);
    	@$club = utf8_decode($_POST['club']);
    	@$licence = utf8_decode($_POST['licence']);
    	$token = sha1(uniqid(rand()));
     
    	// Vérification si deux pseudo sont identiques dans la bade de données.
    	$req = 'SELECT pseudo FROM `bdd`.`inscription` WHERE pseudo = ?';
     
        $prepa = mysqli_prepare($connexion, $req);				//Prépare la requète.
     
        mysqli_stmt_bind_param($prepa ,'s', $pseudo);			//Lie les variables à la requête précédement inscrite.
     
        $prepa->execute();										//Execute la requête.
     
        $resultat = mysqli_stmt_fetch($prepa);					//Retourne le résultat de la requête.
     
    	if ($resultat)											//Vérifie si le pseudo existe.
    	{
    	    echo '<center><p id="mauvais">Pseudo déjà existant, veuillez en entrer un autre.</center></p><br>';
    	}
     
    	/*// Vérification si deux emails sont identiques dans la bade de données.
    	$req = 'SELECT email FROM `bdd`.`inscription` WHERE email = ?';
    
        $prepa = mysqli_prepare($connexion, $req);				//Prépare la requète.
    
        mysqli_stmt_bind_param($prepa ,'s', $email);			//Lie les variables à la requête précédement inscrite.
    
        $prepa->execute();										//Execute la requête.
    
        $resultat = mysqli_stmt_fetch($prepa);					//Retourne le résultat de la requête.
    
    	if ($resultat)											//Vérifie si le mail existe.
    	{
    	    echo '<center><p id="mauvais">Email déjà éxistante, veuillez en entrer une autre.</center></p><br>';
    	}*/
     
    	else if ($mdp == $rmdp)
    	{
    		//Si tout est correct, on rentre les valeurs dans la base.
    	 	$sql = "INSERT INTO `bdd`.`inscription` (`id`, `pseudo`, `mdp`, `email`, `nom`, `prenom`, `annee`, `sexe`, `adresse`, `cp`, `ville`, `telephone`, `categorie`, `club`, `type_licence`, `licence`, `token`)
    	 			VALUES ('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; //Chaque ? représente une variable dans l'ordre indiquer dans la requete sql
     
    	 	$stmt = mysqli_prepare($connexion, $sql);
     
    		//Paramètres : chaines de caractères dans l'ordre - Permet de renseigner les paramètres repéré par les "?" dans l'ordre.
    		mysqli_stmt_bind_param($stmt, 'ssssssssssssssss', $pseudo , $mdp, $email, $nom, $prenom, $annee, $sexe, $adresse, $cp, $ville, $telephone, $categorie, $club, $type_licence, $licence, $token);
     
    		//Exécution
    		mysqli_stmt_execute($stmt);	//Execute la requête.
    		echo "<center><p>Inscription réussi.</center></p><br>";
     
    	}else echo '<center><p id="mauvais">Les mots de passes ne sont pas identiques.</center></p><br>';
     
    	//Envoie un mail de confirmation.
    	$to = $email;
    	$sujet = 'Activation de votre compte';
    	$body = 'Bonjour, veuillez activer votre compte en cliquant ici : http://localhost/site/activation.php?token='.$token.'';
     
    	function smtpmailer($to,$sujet,$body)
    	{
    		global $error;
    		$envoiemail = new PHPMailer();
    		$envoiemail->IsSMTP(); 		// active SMTP
    		$envoiemail->SMTPDebug = 1;	// debogage: 1 = Erreurs et messages, 2 = messages seulement
    		$envoiemail->FromName = "SAYED Mohsin";
    		$envoiemail->SMTPAuth = true;  // Authentification SMTP active
    		$envoiemail->SMTPSecure = 'ssl'; // Gmail REQUIERT Le transfert securise
    		$envoiemail->Host = 'smtp.gmail.com';
    		$envoiemail->Port = 465;
    		$envoiemail->Username = "courseapied2015@gmail.com";
    		$envoiemail->Password = "azerty1992";
    		$envoiemail->Subject = $sujet;
    		$envoiemail->Body = $body;
    		$envoiemail->AddAddress($to);
    		if($envoiemail->Send())
    		{
    			$error = 'Mail error: '.$envoiemail->ErrorInfo;
    			return false;
    		} 
    		else 
    		{
    			$error ='Message sent';
    			return true;
    		}
    	}
    	smtpmailer($to,$sujet,$body);
    }
    ?>

    Dans la page "Mon compte" j'ai tenté ça :

    Code php : 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
    <?php
    	session_start();
    	if(isset($_SESSION['pseudo']))
    	{
    		//Code HTML
    	}
    	else
    	{
    		echo "<script>alert(\"Connectez-vous ! Vous allez être redirigé vers la page de connexion.\")</script>";
    		echo "<SCRIPT>document.location.href='connexion.php'</SCRIPT>";
    	}
     
    ?>
     
    <?php include("commun/page.php"); ?>
    <?php include("commun/menu.php"); ?>
    <?php include("bdd/connexionBD.php"); ?>
     
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title> Mon Compte </title>
    	</head>
    	<body>
    		<center><img src="image/07.png"></center>
    	</body>
    </html>
     
    <?php
    print_r($_SESSION);
    ?>

    Et là il m'affiche "Array ( [pseudo] => test ) ", le membre connecté se nomme bien "test" mais j'aimerais pouvoir afficher et modifier certains éléments qu'il avait inscrit au préalable dans le formulaire.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    avant tout, il faut REFLECHIR à la CONCEPTION :
    - de la table en BdD
    - de la façon de s'inscrire / se connecter / se déconnecter / ...

    En l'occurence :
    1/ tu ne vérifies pas, à l'inscription, si ce pseudo existe DEJA en BdD ou pas
    => test à faire
    [EDIT] Oups, pas lu / pas vu...
    2/ si la table est "normalement" conçue, chaque ligne a un identifiant UNIQUE (champ "id" ou "id_membre", index auto-incrémenté)
    => il faut s'en servir pour identifier le membre (pour les requêtes, notamment), plutôt que d'utiliser le pseudo.

    Enfin, pour répondre à ta question... il suffit de faire une requête.

    N.B.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <link rel="stylesheet" type="text/css" href="style/style.css" />
     
    <!DOCTYPE html>
    <html>
    	<head>
    Depuis quand met-on le lien CSS avant le doctype ???
    Dernière modification par Invité ; 02/01/2015 à 09h19.

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse rapide

    Ce bout de code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	// Vérification si deux pseudo sont identiques dans la bade de données.
        $req = 'SELECT pseudo FROM `bdd`.`inscription` WHERE pseudo = ?';
     
        $prepa = mysqli_prepare($connexion, $req);				//Prépare la requète.
     
        mysqli_stmt_bind_param($prepa ,'s', $pseudo);			//Lie les variables à la requête précédement inscrite.
     
        $prepa->execute();								//Execute la requête.
     
        $resultat = mysqli_stmt_fetch($prepa);				//Retourne le résultat de la requête.
     
    	if ($resultat)								//Vérifie si le pseudo existe.
    	{
    	    echo '<center><p id="mauvais">Pseudo déjà existant, veuillez en entrer un autre.</center></p><br>';
    	}

    Vérifie si le pseudo existe ou non dans la bdd lors de l'inscription, il n'est pas juste ? Il fonctionne dans mon formulaire.

    Oui j'ai un id qui s'auto incrémente dans ma bdd

    Et effectivement, pour le css j'ai corrigé l'erreur après que tu me l'ai signalé

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    J'ai réussi à afficher les informations de l'utilisateur à l'aide de ce code :

    Code php : 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
    		<?php
    			//On selectionne les informations de l'utilisateur pour qu'il puisse les visualiser.
    			$sql = 'SELECT id,email,nom,prenom,adresse,cp,ville,telephone,categorie,type_licence FROM `bdd`.`inscription` WHERE pseudo="'.$_SESSION['pseudo'].'"';
    			$req = mysqli_query($connexion, $sql) or die ('erreur sql!<br>'.$sql.'<br>'.mysql_error());
    			$data = (mysqli_fetch_assoc($req));
     
    			$email = $data['email'];
    			$nom = $data['nom'];
    			$prenom = $data['prenom'];
    			$adresse = $data['adresse'];
    			$cp = $data['cp'];
    			$ville = $data['ville'];
    			$telephone = $data['telephone'];
    			$categorie = $data['categorie'];
    			$type_licence = $data['type_licence'];
     
     
    			echo 'Email : '. $email .' <br>';
    			echo 'Nom : '. $nom .'<br> ';
    			echo 'Prenom : '. $prenom .'<br> ';
    			echo 'Adresse : '. $adresse .'<br> ';
    			echo 'Code Postal : '. $cp .'<br> ';
    			echo 'Ville : '. $ville .'<br> ';
    			echo 'Telephone : '. $telephone .'<br> ';
    			echo 'Categorie : '. $categorie .'<br> ';
    			echo 'Type de licence : '. $type_licence .'<br> ';
    		?>

    J'aimerais maintenant pouvoir modifier certaines informations comme l'adresse, le code postale etc ...

  19. #19
    Invité
    Invité(e)
    Par défaut
    Et alors ? Où est le problème ?
    Tu as bien réussi à faire un formulaire, d'inscription...

    Ce n'est pas plus difficile de faire un formulaire de modification.
    Sauf que là, il faut transmettre l'id du membre dans un <input type="hidden"...>,
    ou mieux : l'avoir sauvegardé dans une variable de SESSION (au moment de la connexion du membre), ce qui évite d'avoir à le transmettre via formulaire.
    Ensuite, c'est un UPDATE de la fiche en BdD.

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Points : 61
    Points
    61
    Par défaut
    Merci encore de ta réponse, je n'ai pas compris la partie avec id hidden.

    J'arrive à valider une nouvelle adresse si je l'écris en dur dans mon code mais je n'arrive pas à associer le champ de texte à ma requête :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form action="" method="POST">
    			Adresse
    			<input name="adresse" placeholder="Adresse"><br>
    			<br><center><p><input value="" type="submit" name="submit" id="submit"></p></center>
    		</form>
     
    		<?php
    		if(isset($_POST['submit']))
    		{
    			$sql = 'UPDATE `bdd`.`inscription` SET `adresse` = $adresse WHERE pseudo="'.$_SESSION['pseudo'].'"';
    			$req = mysqli_query($connexion, $sql) or die ('Erreur sql !<br>'.$sql.'<br>'.mysql_error());
    		}
    		?>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Espace membre en PHP qui ne fonctionne pas
    Par make57 dans le forum Langage
    Réponses: 13
    Dernier message: 25/07/2014, 17h27
  2. [Article] Authentification d'un espace membre avec PHP
    Par Neckara dans le forum Sécurité
    Réponses: 0
    Dernier message: 17/08/2013, 15h38
  3. probleme sur script php - espace membre
    Par new-dmx dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 27/06/2008, 09h52
  4. [Cookies] espace membre en php
    Par Carnage76 dans le forum Langage
    Réponses: 10
    Dernier message: 20/03/2008, 22h16
  5. Réponses: 8
    Dernier message: 26/03/2006, 15h09

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