Page 1 sur 1

Liens visibles si connecté

Posté : 04 déc. 2017, 11:51
par fuerchan
Bonjour,

Je cherche à placer un code dans l'index.php du site qui affichera les liens uniquement si le visiteur est connecté.
Est ce qu'un code comme ci-dessous peut fonctionner ? Si oui le problème est que je ne sais pas ce qu'il faut mettre comme "action" si la condition est bonne.

Code : Tout sélectionner

<?php session_start(); $bdd = new PDO('mysql:host=hostbdd; dbname=nombdd', 'nombdd', '123'); if ($_SESSION['mail'] = 1) { /* rendre visible les liens id="DonwloadAutorisé" */ } ?>
Plus loin dans la page :

Code : Tout sélectionner

<a id="DownloadAutorisé" href="fichier.zip">Télécharger</a>
Merci ;-)
F.

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 12:06
par Spols
dans une condition il te faut utiliser un double égale == plutot qu'un simple. afin de bien faire une comparaison et non pas une assignation
Je ne connais pas tron système de login, mais si il fonctionne bien par session et que la variable de session mail est égale à 1 après connexion, ca devrait marcher.

comme action en simple echo '<a id="DownloadAutorisé" href="fichier.zip">Télécharger</a>';
devrait suffire.

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 13:07
par fuerchan
Voici le code pour la connexion :

Code : Tout sélectionner

$bdd = new PDO... 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']; } else { $erreur = "Mauvais mail ou mot de passe !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?>
Concernant les liens, j'en ai plusieurs, placés dans un tableau, à la suite d'un descriptif. Je ne peux donc pas utiliser l'echo comme ceci.
Aussi, je m'aperçois qu'en utilisant juste un identifiant les liens deviennent visibles en affichant le code de la page. Il faudrait que je puisse mettre mes liens en php pour ne pas qu'ils s'affichent dans le code et pouvoir les rendre visible uniquement quand le visiteur est connecté.

Merci
F.

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 14:06
par Spols
Si tu veux quelque chose de sécurisé, il te faut bien afficher les lien en php, et pas les masquer avec du css.
A moins que tu ne vérifie aussi la connexion avant l'accés au lien ce qui serait bien mieux.

car imagine que je sache que le lien pointe vers fichier.zip, qu'est ce qui m'empèche de télécharger le fichier sans être connecté ?

si tes liens sont dans un tableau, c'est lors du parcours de ce tableau et la création des lien en php qu'il faut tester la connexion de l'utilisateur
une condition possible est isset($_SESSION['id']) qui vérifiera que la session contient une varaible nommé id
une personne non connecté n'aura pas cette variable.

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 15:05
par fuerchan
Comment je fais les liens en php ?
J'ai essayé ceci, mais le lien s'affiche normalement :

Code : Tout sélectionner

<? echo "<a href=\"fichier.zip\">Télécharger</a>"; ?>
Merci
F.

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 16:45
par Spols
Concernant les liens, j'en ai plusieurs, placés dans un tableau, à la suite d'un descriptif. Je ne peux donc pas utiliser l'echo comme ceci.
comment lis tu ce tableau pour générer tes liens ?

Re: Liens visibles si connecté

Posté : 04 déc. 2017, 19:17
par fuerchan
Voilà comment se présente le tableau pour le moment :

Code : Tout sélectionner

<table> <tr> <td><h2>AAAA</h2></td> <td><h2>BBBB</h2></td> <td><h2>CCCC</h2></td> </tr> <tr> <td><img src="imageAAAA.jpg" width="150" height="216" alt=""></td> <td><img src="imageBBBB.jpg" width="150" height="216" alt=""></td> <td><img src="imageCCCC.jpg" width="150" height="216" alt=""></td> </tr> <tr> <td>Descriptif AAAA.<a href="index.php?page=PageAAAA">Plus</a></td> <td>Descriptif BBBB.<a href="index.php?page=PageBBBB">Plus</a></td> <td>Descriptif CCCC.<a href="index.php?page=PageCCCC">Plus</a></td> </tr> <tr> <td><a href="fichierAAAA.zip">Télécharger</a></td> <td><a href="fichierBBBB.zip">Télécharger</a></td> <td><a href="fichierCCCC.zip">Télécharger</a></td> </tr> <tr> <td><br /><br /></td> <td><br /><br /></td> <td><br /><br /></td> </tr> <tr> <td><h2>DDDD</h2></td> <td><h2>EEEE</h2></td> <td><h2>FFFF</h2></td> </tr> <tr> <td><img src="imageDDDD.jpg" width="150" height="216" alt=""></td> <td><img src="imageEEEE.jpg" width="150" height="216" alt=""></td> <td><img src="imageFFFF.jpg" width="150" height="216" alt=""></td> </tr> <tr> <td>Descriptif DDDD.<a href="index.php?page=PageDDDD">Plus</a></td> <td>Descriptif EEEE.<a href="index.php?page=PageEEEE">Plus</a></td> <td>Descriptif FFFF.<a href="index.php?page=PageFFFF">Plus</a></td> </tr> <tr> <td><a href="fichierDDDD.zip">Télécharger</a></td> <td><a href="fichierEEEE.zip">Télécharger</a></td> <td><a href="fichierFFFF.zip">Télécharger</a></td> </tr> </table>
Après tout ce que j'ai essayé de faire a échoué. Notamment mettre les lien en echo. Comme ceci:

Code : Tout sélectionner

<? echo "<a href=\"fichier.zip\">Télécharger</a>"; ?>

Re: Liens visibles si connecté

Posté : 05 déc. 2017, 15:28
par Spols
Ok tu parle d'un tableau HTML je comprenais un tableau PHP Array

il suffit de remplacer tous les liens que tu veux masquer selectivement comme ceci

<td><?php if (isset($_SESSION['id'])) echo '<a href="fichierFFFF.zip">Télécharger</a>';?></td>

en gardant bien la balise td en dehors du php pour ne pas deformer le tableau pour les invités.

Re: Liens visibles si connecté

Posté : 05 déc. 2017, 17:09
par fuerchan
J'avais déjà tester ce code dans les liens avec la variable id et mail, mais rien ne s'affiche quand je me connecte.
La connexion se fait avec mail et Mpd dans la Bdd.

Re: Liens visibles si connecté

Posté : 06 déc. 2017, 09:21
par Spols
as tu bien démarré ta session en début de fichier ?
en tout début de fichier ajoute <?php session_start();?>

Re: Liens visibles si connecté

Posté : 08 déc. 2017, 22:00
par fuerchan
Bonjour,

Oui, ce code est placé en tout premier sur la page index.php puisque toutes les autres "page" sont insérées en include dans l'index.

Re: Liens visibles si connecté

Posté : 11 déc. 2017, 09:41
par Spols
je me base sur ton code
$_SESSION['id'] = $userinfo['id'];
$_SESSION['pseudo'] = $userinfo['pseudo'];
$_SESSION['mail'] = $userinfo['mail'];

essaye de tester $_SESSION['pseudo'] ou $_SESSION['mail']

sinon affiche la valeur de ces variables pour comprendre pourquoi leur test ne marche pâs