2013-09-02 9 views
0

Je développe un site Web, où dans la plupart des pages l'utilisateur doit se connecter pour voir les pages du site Web. Quel est le meilleur moyen de vérifier si l'utilisateur est connecté ou non, et s'il ne le redirige pas vers la page de connexion.PHP Authentifier l'utilisateur pour chaque page du site Web

actuellement j'utilise le code suivant pour le faire.

if(!isset($_SESSION["username"])) //I set the session when user log in and destroy when user logout 
    header("location: login.php"); 

Il ya beaucoup de pages et je mets ce code dans chaque page. Cela fonctionne aussi bien.

Je veux savoir s'il existe d'autres façons de faire cela? Ou ce que je fais est un bon moyen? et je n'ai pas besoin de changer quoi que ce soit.

+1

Vous devriez créer une fonction pour cela et appeler cette fonction sur chaque page en haut. – Jay

+0

Vous devriez utiliser un framework, il traiterait des problèmes comme celui-ci pour vous et il vous donne la structure dont vous avez besoin pour ne pas vous répéter - cakephp.org –

+0

Un framework juste pour l'authentification? Un peu exagéré ne pensez-vous pas? –

Répondre

0

En général, je trouve à une séance comme une fois l'utilisateur se connecte à:

$_SESSION['loggedIn'] = TRUE; 

Ensuite, il suffit de vérifier si TRUE ou FALSE en cas de besoin.

ex:

if($_SESSION['loggedIn']){ 
    //Something here 
} else{ 
    //Don't do it 
} 
+0

Votre technique est aussi très similaire à moi, vous stockez simplement vrai/faux et je stocke le nom d'utilisateur. Mais y a-t-il quelque chose dans PHP comme filtre dans Java? –

+0

Désolé, je ne suis pas familier avec Java –

+0

ou devrais-je faire un fichier comme auth.php qui contient le code à rediriger et l'inclure dans toutes les pages si nécessaire? –

0

Il est dépendent de l'architecture. Si vous utilisez un framework, comme symfony, vous n'avez pas besoin de les gérer pour chaque page. Je suppose que vous utilisez du PHP pur sans aucun support de framework. Vous devez donc vérifier si l'utilisateur est authentifié pour chacune de vos requêtes. Je vous suggère de placer le segment de code lié à la déconnexion dans chaque page, placez-le dans une fonction globale et appelez-le dans chaque page. Alors que, si vous voulez tout simple changement dans ce segment de code, vous pouvez y arriver en ne changeant que cette fonction globale

+0

J'utilise pur PHP sans framework, donc je devrais faire un fichier quelque chose comme auth.php qui vérifie la session et rediriger si l'utilisateur n'est pas connecté, puis l'inclure au sommet de chaque page nécessitant une authentification? –

+0

Aussi simple que cela – chanaka777

2

solution simple est de créer un fichier nommé session.php

comprennent votre session code de vérification dans ce. Comme,

if(!isset($_SESSION['YOUR_VAR'])) { 
    header('Location: login.php'); 
} 

inclure ce fichier dans toutes vos pages, avec include OU require

Je préfère fonction require. par exemple dans votre fichier home.php au début de la page d'écriture,

<?php 
    session_start(); //don't forget to do this 
    require('session.php'); 
?> 

REMARQUE: À l'avenir, si vous améliorez votre session code de vérification que vous venez devez changer un seul fichier.

+0

Merci cela semble bon et fonctionnera pour moi, et aussi n'aura pas de problème si j'ai besoin de changer le code d'authentification. –

+1

@SumitPMakwana: Oui. C'est la puissance de Core-PHP. quand vous suivez votre propre style. Cela vous aidera beaucoup. –

+0

Vous avez oublié la sortie() après l'en-tête – Adam

Questions connexes