Restreindre acces à une page

Ce sujet est résolu
152061
,

Bonjour,
Je suis nouvelle dans la programmation et sur le site.

Dans mon apprentissage de PHP Je souhaite créer une un site avec plusieurs pages, certaines sont d'accès gratuit et d'autres sont réserve à un abonnement .

J'ai 5 paramètres et je voudrais une fonction php qui lorsque l'utilisateur se connecte et qu'il demande une page soumise à un abonnement, le php fasse les choses suivantes :

1 : Le php vérifie si une session est ouverte ? si oui
2 : Le récupère l'ID de l'utilisateur.
3 : Je charge la base de donnée
4 : avec l'ID de l'utilisateur en cours, le php vérifie si l'utilisateur a un abonnement. Si oui je le garde sur la page sinon je le redirige vers une autre page.

La méthode utilisé est la methode PDO avec Mysql

Cela fait des heureus que je cherche si une personne peut m'aider je lui en serai tres reconnaissante.

Pour information Le paiement de l'abonnement je le valide "à la main" dans la base de donnée.

5 Réponse

37685
,

Salut,

et $_SESSION['subscribed']; est seulement déclaré, tu n'as rien mis dedans ?
Le moment où il faut remplir cette variable, c'est dans ta fonction "login".
Quand l'utilisateur se connecte, tu récupères en BDD s'il a un abonnement ou non, et tu "ranges" cette information dans $_SESSION['subscribed].

Aussi, ce n'est pas ultra important mais,
quand je vois ce genre de message : "Vous n'avez pas le droit d'accéder à cette page",
j'ai l'impression que j'essaie d'accéder à une page d'admin, ou qui demande un certain "niveau d'accès".
On ne comprend pas vraiment que c'est juste parce-qu'on est pas connecté.
Essaie de le dire plus explicitement, du style :
"Vous devez être connecté pour accéder à cette page"
(remarque, la redirection vers "login.php" devrait aider à comprendre... Mais tout de même.)

40917
, Il a répondu à ma question !

Bonjour,
Tu as plus simple comme méthode.

Tu peux directement charger l'abonnement (un état dans la session : $_SESSION['abonnement']) lors de la connexion de l'utilisateur
Et lorsque qu'il souhaites accéder à une page, tu testes cette variable afoin de savoir si à le droit ou non.

Cela t'évite de soliciter ta BDD à chaque page

152061
, Il a répondu à ma question !

Un grand merci à toi Carouge

Mais je pense que je m'y prend mal car ça fait des heures que jessaie et je ne comprends pas la solution

Voici le code j'ai entré en dernier

<?php 

require 'inc/functions.php';
logged_only();

$_SESSION['subscribed'];


if ($_SESSION['subscribed']=0) {
    $_SESSION['flash']['danger'] = "Vous n'avez pas encore les conditons requise pour accedez à cette page" ;
    header("account.php");
    exit();
}

 ?>

Et voici la fonction logged_only();

function logged_only(){
    if(session_status() == PHP_SESSION_NONE){
        session_start();
    }
    if(!isset($_SESSION['auth'])){
        $_SESSION['flash']['danger'] = "Vous n'avez pas le droit d'accéder à cette page";
        header('Location: login.php');
        exit();
    }
}

Je suis en train de refaire un tuto de Grafitkart et d'y apporté mes modifications.
Mais je pense que je n'ai pas vraiment compris ce qui a était fait.
C'est épuisant de passer une journée sur un problème sans le comprendre. Je ne sais même comment vous avez fait pour maitriser le code.

Un grand merci à vos pour les efforts que vous avez fournis à réaliser tous cela !

44835
, Il a répondu à ma question !

Tu as un pb avec le test == et pas =

if ($_SESSION['subscribed']=0) {

et il manque location: dans

header ('account.php');

Dans ton message tu dois utiliser l'infinitif 'er' et pas 'ez'
...requise pour accedez à cette page

152061
, Il a répondu à ma question !

Merci à tous