Tuto : Créer un espace membre

fuerchan

fuerchan Le 29 octobre 2017 à 16:20 (Édité le 25 janvier 2019 à 17:54)

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.
blabla23272327

blabla23272327 Le 19 novembre 2017 à 12:16

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

fuerchan Le 4 décembre 2017 à 09:25

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

Merci ;-)
F.
Balatharas

Balatharas Le 4 décembre 2017 à 23:43 (Édité le 6 décembre 2017 à 19:02)

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

fuerchan Le 5 décembre 2017 à 10:59 (Édité le 5 décembre 2017 à 11:00)

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

Balatharas Le 6 décembre 2017 à 19:13 (Édité le 6 décembre 2017 à 19:17)

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 😉
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

fuerchan Le 10 décembre 2017 à 19:53 (Édité le 22 décembre 2017 à 09:01)

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" :
<?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"
<?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

Balatharas Le 14 décembre 2017 à 14:08

Quelles sont les lignes 27 et 37 -- ?
fuerchan

fuerchan Le 14 décembre 2017 à 18:17

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.
Balatharas

Balatharas Le 18 décembre 2017 à 18:40

Salut, il faut la ligne 27 de connexion.inc.php et 37 de connexion.php
Cherche du côté des lignes où tu utilise header('Location: ');
fuerchan

fuerchan Le 22 décembre 2017 à 09:00

Bonjour,

Dans "connexion.inc.php" il n'y a pas de ligne 27. Le code s'arrête à la ligne 8.
Et dans " connexion.php" il n'y a rien non plus à la ligne 37.

J'ai regardé autour mais rien ne semble anormal (...)

Ces lignes sont visibles dans les codes insérés dans un message précédant.

Merci
F.
Balatharas

Balatharas Le 23 décembre 2017 à 21:46 (Édité le 23 décembre 2017 à 21:47)

Salut, je ne vois pas bien ce que ça peut être, je te propose de rejoindre le discord de primfx
Comme ça on pourra parler en privé.
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte