2009-01-29 11 views
3

Les variables de session ne fonctionnent apparemment pas pour moi. Je ne sais pas ce que je fais mal. Voici le code que j'utilise pour vérifier un mot de passe valide:La session PHP ne fonctionne apparemment pas

if ($input_password_hash == $password_hash) 
{ 
    session_start(); 
    $_SESSION['is_user'] = 1; 
    header("Location: ../new_look"); //or Location: index.php 
} 
else echo "Wrong password."; 

dans le fichier index.php (où il redirige vers), j'ai ce code:

if ($_SESSION['is_user'] == 1) 
{ 
    //show index page with navigation bar for registered user 
} 

else 
{ 
//do something else 
} 

mais il est ne fonctionne pas du tout.

La session commence apparemment et peut être vérifiée en vérifiant le cookie.

Qu'est-ce que je fais mal?

+1

Cela peut être stupide, mais vous avez "session_start();" sur index.php, non? Votre code semble devoir fonctionner. – Sasha

Répondre

5

Vous savez que vous devez écrire session_start() avant d'utiliser la variable $_SESSION dans une demande, n'est-ce pas? On dirait que vous ne l'avez pas mis dans index.php n'importe où.

1

Je viens de revenir de fixer que ... ajouté session_start() tout en haut du fichier - même avant la balise <html>. Faire session_start() au milieu donne des erreurs ... je ne sais pas pourquoi. Je suis nouveau à cela. Merci pour votre réponse rapide si.

+1

session_start doit être appelée avant que les en-têtes soient envoyés, c'est probablement pourquoi il a soulevé des erreurs lorsque vous mettez au milieu. – Juan

+0

Juste une correction mineure au commentaire de Juan. session_start doit être appelée avant l'envoi du corps de la réponse (les autres en-têtes sont corrects). –

+0

En fait non, Juan a raison. Vous ne pouvez même pas mettre le dtd avant session_start(). J'ai essayé ça. Mettez juste le dtd, puis session_start(), et il a encore jeté l'erreur. – Mussnoon

2

Session_start(); doit être placé avant tout en-tête qui sera envoyé par ex. avant toute balise HTML sur le fichier php.