2009-09-06 6 views
0

Je crée quelques pages (y compris la page de connexion) qui ne doivent être accessibles que par un sysadmin.validation de session utilisateur en php

Dans login.php une fois que les informations d'identification de l'utilisateur ont été vérifiées. Je mets une variable de session comme ceci:

mysql_connect("localhost", $values['uname'], $values['password']) or 
die(mysql_error()); 
echo "Connected to MySQL<br />"; 
mysql_select_db("somedb") or die (mysql_error()); 

session_start(); 
$_SESSION['level'] = 'admin'; 
header('Location: /admin/index.php'); 

Et puis dans la page index.php que je fais ce qui suit:

<?php 
if($_SESSION['level'] !== 'admin'){ 
    header("location:../admin/login.php"); 
} 
?> 

Mais il ne semble pas fonctionner. Chaque fois que je suis redirigé vers login.php (même après une connexion réussie via login.php).
Y a-t-il quelque chose qui ne va pas dans cette approche et comment je vais y arriver?

Fondamentalement la page autre que login.php je besoin d'un moyen de rendre l'utilisateur vous est connecté ...

+0

Je pense que cette solution n'est pas propre. Parce que les autres pages sont vraiment chargées et exécutées et l'authentification est codée en dur dans celles-ci. existe-t-il une autre solution pour vraiment "refuser l'accès" aux pages spéciales? – Isaac

Répondre

1

Vous deviez initialiser les sessions au toutes les pages que vous vouliez utiliser avec les sessions. Mettez session_start() en haut de la page (avant d'envoyer l'en-tête).

+0

ne savait pas qu'il doit être là sur chaque page. Merci –

3

faites session_start() vous avant de vérifier ou mettre $_SESSION['level']?

+0

Je l'ai fait maintenant mais toujours le même problème. Je vais modifier le post original en conséquence. –

+0

Vous n'appelez pas session_start() avant de vérifier $ _SESSION ['level'] dans le second script. C'est ce que je veux dire par "vérification ou réglage". – cletus