2012-11-20 5 views
1

avez cette question à l'esprit. Je sais qu'il y a beaucoup de questions comme celle-ci sur Internet, mais aucune d'entre elles ne semble faire l'affaire pour moi :(Session PHP à travers les pages

Je prévois donc de créer un adminpanel sur un site web. écran, lorsque le nom + passe est correct, une session est faite.Sur les autres adminpages je vais tester si cette session est définie, par ce que je sais si l'utilisateur peut accéder à la page ou non

Inlog. php (simplyfied)

<?php session_start(); ?> <html ... 

puis après beaucoup de contrôles

if ($adminpwd == $pass) { 
    session_regenerate_id(); 
    $_SESSION["mysessionname"] = $name; 
    $tijd = date('H:i:s', strtotime('+ 30 minutes')); 
    $_SESSION["E4A_einde"] = $tijd; 
    session_write_close(); 
echo "<script type='text/javascript'>window.location = 'myotheradminpage'</script>"; 
} 

Mes autres pages php comprennent ce script

<?php session_start(); 
if (!isset($_SESSION["mysessionname"])) { 

session_destroy(); 
echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("no session found") </SCRIPT>'; 
echo "<script type='text/javascript'>window.location = 'myloginpage'</script>"; 
     } 

Avec cet élément, si la session est pas défini il y a une redirection, si la session est fixée l'autre code sur la page php wil être déclenché.

Mais le fait est que chaque fois que je suis redirigé à nouveau sur ma page de connexion. donc ma session n'est pas définie: s Je n'arrive pas à comprendre pourquoi alors s'il vous plaît aidez-moi.

J'ai essayé beaucoup de amincit avec sur chaque page pour ajouter le session_start() Methode, j'ai essayé de régénérer l'identifiant de session avant de régler les sessions, mais rien ne marche ..

+0

@ Mr.Alien 'javascript' – itachi

+0

@itachi J'ai les yeux de PHP ... lol juste vu et enlevé mon commentaire –

+1

regardez [en-tête] (http://php.net/manual/fr/function.header .php) il y a une méthode à rediriger côté serveur. – itachi

Répondre

1

Dans votre session_start initiale avant la HTML, essayez de définir ceci:

<?php session_start(); 
$_SESSION["mysessionname"]; ?> 
<html ... 

Cela va déclarer votre variable de session avant que quoi que ce soit s'exécute.

Faites-moi savoir si cela fonctionne.

+1

'php' n'a pas besoin de cette procédure. – itachi

+0

n'a pas fonctionné non plus – Kevinc

+0

Je vais définir cela comme meilleure réponse. J'avais une règle Kevinc

0

Supprimez le session_regenerate_id. Il envoie un autre cookie, mais la sortie a déjà été envoyée.

Appelez également session_write_close. Cela arriverait à la fin du script et cette micro-optimisation a un impact négatif sur la qualité de la base de code. Si vous avez des problèmes de concurrence, rendez-vous au magasin de sessions memcached, mais vous êtes loin de là.

Supprimez également l'appel session_destroy. S'il n'est pas autorisé, il n'est pas autorisé. Votre logique suggère ici de purger une session déjà vide.

+0

erm .... régénérer l'identifiant de la session après la connexion devrait être encouragé Ne pas décourager – itachi

+0

Régénérer à chaque demande pourrait être encouragé, sinon il sert un peu de but. – Alex

Questions connexes