Tuto : Créer un espace membre
- Accueil
- Forum
- Programmation
- PHP
- Tuto : Créer un espace membre
fuerchan Le 29 octobre 2017 à 16:20 (Édité le 25 janvier 2019 à 17:54)
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 Le 19 novembre 2017 à 12:16 (Édité le 1 janvier 1970 à 01:00)
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 Le 4 décembre 2017 à 09:25 (Édité le 1 janvier 1970 à 01:00)
Ok, je vois tout ça...
Merci ;-)
F.
Balatharas Le 4 décembre 2017 à 23:43 (Édité le 6 décembre 2017 à 19:02)
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 Le 5 décembre 2017 à 10:59 (Édité le 5 décembre 2017 à 11:00)
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 Le 6 décembre 2017 à 19:13 (Édité le 6 décembre 2017 à 19:17)
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 simplementAprès le truc c'est juste de l'adapter avec ton code...Pareil pour le téléchargementif(isset($_SESSION['id'])) { echo "Mon profil";} else { echo "Se connecter"; echo "<br />"; echo "S’inscrire";}
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"
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 Le 10 décembre 2017 à 19:53 (Édité le 22 décembre 2017 à 09:01)
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 Le 14 décembre 2017 à 14:08 (Édité le 1 janvier 1970 à 01:00)
fuerchan Le 14 décembre 2017 à 18:17 (Édité le 1 janvier 1970 à 01:00)
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 Le 18 décembre 2017 à 18:40 (Édité le 1 janvier 1970 à 01:00)
Cherche du côté des lignes où tu utilise header('Location: ');
fuerchan Le 22 décembre 2017 à 09:00 (Édité le 1 janvier 1970 à 01:00)
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 Le 23 décembre 2017 à 21:46 (Édité le 23 décembre 2017 à 21:47)
Comme ça on pourra parler en privé.