Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: fuerchan, kallou224
Auteur Sujet: Tuto : Créer un espace membre

fuerchan
Membre Premium

Messages: 6

Bonjour,

Depuis le tuto "Créer un espace membre ", comment un membre peut-il :
- Récupérer son mot de passe, s'il l'a oublié ?
- Savoir qu'il est connecté ?
- Être autoriser à téléchargement sur le site uniquement s'il est inscrit et connecté ?

Merci  ;-)
F.
Publicité

blabla23272327

Messages: 4

1- tuto prime fx sur mdp oublié
2- condition avec l'id de ta base de donnée, if{ $_SESSION['id'] != 0 si il est co tu affiches le code mon profil deconnexion }
else {ton code inscription connexion}
3 -  du coup condition avec le $_SESSION['id'] il accède aux pages de telechargement si il est co avec le session start();

fuerchan
Membre Premium

Messages: 6

Bonjour,
Ok, je vois tout ça...

Merci ;-)
F.

Balatharas

Messages: 545

Salut, ce sera plutot simplement
if(isset($_SESSION['id'])) {
     echo "Mon profil";
} else {
     echo "Se connecter";
     echo "<br />";
     echo "S’inscrire";
}
Pareil pour le téléchargement
if(isset($_SESSION['id'])) {
     echo "Télécharger ici";
} else {
     echo "Vous n’êtes pas connectés vous ne pouvez donc pas télécharger";
     echo "<br /> Me connecter";
}

fuerchan
Membre Premium

Messages: 6

Bonjour,

Ce n'est pas aussi simple que ça  ;-)
Je vais déjà tenter de régler un point, celui de la co/deco et inscription.

J'utilise include pour insérer le contenu des pages du site dans l'index.php du site, comme ceci (code placé dans l'index.php du site) :

<?php
    if (!isset($_GET['page'])) $page= 'index'; else $page= $_GET['page'];
        switch($page)  {

            case 'index': include ('pages/index.inc.php');break;

            /* ---------------DEBUT MEMBRES ----------------------------*/
            case 'inscription': include ('membres/inscription.php');break;
            case 'confirmation': include ('membres/confirmation.php');break;
            case 'connexion': include ('membres/connexion.php');break;
            case 'deconnexion': include ('membres/deconnexion.php');break;
            case 'profil': include ('membres/profil.php');break;
            /* ---------------FIN MEMBRES ----------------------------*/
        }
?>


Ensuite j'appelle les contenus avec ceci : index.php?page=xxx (xxx = index, inscription, confirmation, connexion...)

Partant de là, j'ai placé dans la div qui affiche et gère les inscriptions, connexions et déconnexions ceci :

<?php
        if ($_SESSION['id'] = 1) {
            echo 'Vous êtes connectés' ;
                echo "<br />";
            echo'<a href="index.php?page=deconnexion">Déconnexion</a>';

            } else {
                echo '<a href="index.php?page=connexion">Se connecter</a>';
                    echo "<br />";
                echo '<a href="index.php?page=inscription">S\'inscrire</a>';
            }
?>


Donc, cela devrait afficher "Vous êtes connectés" et le lien "Déconnexion" si je suis connecté.
Sinon me proposer les liens pour me connecter ou m'inscrire.

Hors que je sois connecté ou déconnecté, seuls les echo "Vous êtes connectés" et "Déconnexion" apparaissent.

Merci,
F.

Balatharas

Messages: 545

Bah déjà pour commencer ça
if ($_SESSION['id'] = 1)
C'est faux car tu demande juste d'afficher ce qui se trouve après cette condition si l'utilisateur ayant l'id 1 est connecté (= a créé $_SESSION)

Ce que je t'ai donné, si tu as suivi le tuto d'espace membre de PrimFX a la lettre, alors si c'est aussi simple que ça Clin d'oeil
Salut, ce sera plutot simplement
if(isset($_SESSION['id'])) {     echo "Mon profil";} else {     echo "Se connecter";     echo "<br />";     echo "S’inscrire";}
Pareil pour le téléchargement
if(isset($_SESSION['id'])) {     echo "Télécharger ici";} else {     echo "Vous n’êtes pas connectés vous ne pouvez donc pas télécharger";     echo "<br /> Me connecter"
Après le truc c'est juste de l'adapter avec ton code...
Ensuite si quand tu te déconnectes seuls les echo "Vous êtes connectés" et "Déconnexion" apparaissent c'est qu'il doit y avoir un pb au niveau de ta déconnexion

Pour terminer je pense que ce code est correct:
<?php
    if(!isset($_GET['page'])) {
        $page= 'index';
    } else {
        $page= $_GET['page'];
    }

    switch($page)  {
        case 'index': include ('pages/index.inc.php');break;

        /* ---------------DEBUT MEMBRES ----------------------------*/
        if(isset($_SESSION['id'])) { // SI MEMBRE CONNECTÉ = A CRÉÉ $_SESSION['id'] ALORS:
            case 'profil': include ('membres/profil.php');break;
            case 'deconnexion': include ('membres/deconnexion.php');break;
        } else { // SINON (si user n'a pas créé $_SESSION['id']) alors:
            case 'inscription': include ('membres/inscription.php');break;
            case 'confirmation': include ('membres/confirmation.php');break;
            case 'connexion': include ('membres/connexion.php');break;
        }
        /* ---------------FIN MEMBRES ----------------------------*/
    }
?>
PS: J'ai rajouté des accolades a la ligne 2 pour mieux m'y retrouver, ça ne change absolument rien
EDIT: Si rien n'est réglé (que ce message à servi a rien lol) donne ton code php de ton fichier connexion, et ton fichier deconnexion

fuerchan
Membre Premium

Messages: 6

Bonjour,

Je m'enlise dans tout ce code... En fait je pense avoir un problème avec les include et <?php  session_start();?>.

index.php :
<?php  session_start();?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

     <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
     <meta name="content-langage" content="fr" />
     <meta name="robots" content="a11" />

       <!-- CSS -->
        <link rel="stylesheet" type="text/css" href="membres/styles.css"/>

        <title>Site</title>
    </head>

    <body>

        <div id="conteneur">

        <div id="tete">
        </div>

         <div id="ContenuConnexion">
        <?php include ("pages/connexion.inc.php") ?>
        </div>

        <div id="pied">
        <p id="copyright">Tous droits réservés.</p>
        </div>

       <div id="ContenuGauche">

   <?php
     if(!isset($_GET['page'])) {
        $page= 'index';
    } else {
        $page= $_GET['page'];    }

    switch($page)  {

    case 'index': include ('pages/index.inc.php');break;

    case 'confirmation': include ('membres/confirmation.php');break;
    case 'connexion': include ('membres/connexion.php');break;
    case 'dconnexion': include ('membres/dconnexion.php');break;
    case 'cookieconnect': include ('membres/cookieconnect.php');break;
    case 'inscription': include ('membres/inscription.php');break;
    case 'profil': include ('membres/profil.php');break
 
    }
    ?>
         </div>
        </div>
    </body>
</html>


Include "connexion" :
<?php

$bdd = new PDO('mysql:xxx;dbname=xxx', 'xxx', 'xxx');

include_once('cookieconnect.php');

if(isset($_POST['formconnexion'])){
    $mailconnect = htmlspecialchars($_POST['mailconnect']);
    $mdpconnect = sha1($_POST['mdpconnect']);

    if(!empty($mailconnect) AND !empty($mdpconnect)){
        $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
        $requser->execute(array($mailconnect, $mdpconnect));
        $userexist = $requser->rowCount();
        if($userexist == 1){

            if(isset($_POST['rememberme'])) {
                setcookie('email',$mailconnect,time()+365*24*3600,null,null,false,true);
                setcookie('password',$mdpconnect,time()+365*24*3600,null,null,false,true);
            }
            $userinfo = $requser->fetch();
            $_SESSION['id'] = $userinfo['id'];
            $_SESSION['pseudo'] = $userinfo['pseudo'];
            $_SESSION['mail'] = $userinfo['mail'];
            header("Location:http://www.xy.com/index.php?page=profil?id=".$_SESSION['id']);
        }
        else
        {
            $erreur = "Mauvais mail ou mot de passe !";
        }
    }
    else
    {
        $erreur = "Tous les champs doivent être complétés !";
    }
}

?>
<html>
    <head>
        <title>TUTO PHP</title>
        <meta charset="utf-8">
    </head>
    <body>
        <div align="center">
            <h2>Connexion</h2>
            <br /><br />
            <form method="POST" action="">
                <input type="email" name="mailconnect" placeholder="Mail" />
                <input type="password" name="mdpconnect" placeholder="Mot de passe" />
                <br /><br />
                <input type="checkbox" name="rememberme" id="remembercheckbox" /><label for="remembercheckbox">Se souvenir de moi</label>
                <br /><br />
                <input type="submit" name="formconnexion" value="Se connecter !" />
            </form>
            <?php
            if(isset($erreur))
            {
                echo '<font color="red">'.$erreur."</font>";
            }
            ?>
        </div>
    </body>
</html>
Include "deconnexion"
<?php
setcookie('email','',time()-3600);
setcookie('password','',time()-3600);
$_SESSION = array();
session_destroy();
header("Location:http://www.xy.com/index.php?page=connexion");
?>
- L'inscription se fait bien.
- La connexion affiche se message d'ereur :

Warning: Cannot modify header information - headers already sent by (output started at /.../connexion.inc.php:37) in /.../connexion.php on line 27

"connexion.inc.php" = fichier avec div dans laquelle il y a les liens "Inscription", "connexion" et "Déconnexion".

connexion.inc.php :
<h2>Connexion</h2>
<br />
    <ul>
        <li><a href="index.php?page=inscription">Inscription</a></li>
        <li><a href="index.php?page=connexion">Connexion</a></li>
        <li><a href="index.php?page=deconnexion">Déconnexion</a></li>

    </ul>
Merci
F.

Balatharas

Messages: 545

Quelles sont les lignes 27 et 37 -- ?

fuerchan
Membre Premium

Messages: 6

Bonjour,
Quelles sont les lignes 27 et 37 -- ?
Je ne sais pas, étant donné que "connexion.inc.php" est inséré (include) dans ma page.

Merci ;-)
F.


Veuillez vous connecter ou créer un compte pour poster une réponse