2012-05-11 7 views
0

J'ai un site Web qui contient un login et quand l'utilisateur est connecté, je veux qu'il affiche un message sur la page principale ainsi que mener la session à travers.sessions PHP erreur inconnue

Je reçois l'erreur:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by.. 

et

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 

Quand je ne suis pas connecté, il affiche l'erreur, mais dès que je me connecte et revenir à la page, il disparait , mais n'affiche pas le "Vous êtes connecté!" comme il se doit ...

Voici mon code d'authentification après contrôle la base de données pour un match:

if ($result["userName"] == $_POST[txtUsername] && $result["password"] ==$_POST[txtPassword]) 
    { 
     ?> 
     <script type="text/javascript">; 
     alert("successfully logged in, <?php echo $result['userName'];?>!"); 
     window.location.href='http://manning3.jcu.edu.au/~jc192699/index.html'; 
     </script> 
     <?php 
     session_start(); 
     $_SESSION["access"] = 'granted'; 
    } 

Et mon code dans mon index.php qui semble provoquer l'erreur:

<?php 
    session_start(); 
    if ($_SESSION["access"] == 'granted'){ 
     ?> 
     <p>You are logged in!</p> 
     <?php 
    } 
    else{ 
    ?> 
    <p>You are not logged in!</p> 
    <?php 
    } 
    ?> 

Toute aide serait grandement appréciée. Je vous remercie!

+0

Quelque part dans votre code, un espace libre (souvent à la fin d'un fichier) provoque le déclenchement de la sortie avant votre appel à 'session_start'. Consultez la myriade de questions connexes dans la colonne de droite pour plus d'endroits à regarder ... – rjz

+0

peu importe ce que vous faites avec les sessions, le session_start() doit être la première chose que vous faites. – thetrompf

+0

Merci pour votre aide! Les erreurs ont maintenant disparu, mais j'ai toujours un problème ... Après que je me connecte et retourne à la page d'index, le système n'affiche pas "Vous êtes identifié!". Des indices? – DommyCastles

Répondre

2

session_start() doit être appelée avant l'impression de toute sortie dans le navigateur. Étant donné que vous imprimez un script javascript avant de démarrer la session, les en-têtes ont déjà été définis. Une session ne peut donc pas être démarrée.

+0

Merci pour votre aide! Les erreurs ont maintenant disparu, mais j'ai toujours un problème ... Après que je me connecte et retourne à la page d'index, le système n'affiche pas "Vous êtes identifié!". Des indices? – DommyCastles

+0

Les cookies fonctionnent très bien pour la connexion. Il suffit de stocker un cookie indiquant si l'utilisateur est connecté ou non et de définir une date d'expiration. Ensuite, pour votre déconnexion, vous expirez ce cookie en définissant sa date d'expiration sur une date antérieure. En outre, sur une note de côté, vous devez appuyer sur accepter sur la réponse que vous acceptez en posant une question; Cela permet aux autres utilisateurs de savoir comment vous avez résolu le problème que vous avez rencontré. – Vulcan

+0

Des idées sur comment je peux y arriver? – DommyCastles

1

Il semble que vous ayez un espace avant votre déclaration <?php sur la ligne 1. Cela entraînera l'envoi d'en-têtes avant session_start() et pourrait être à l'origine de l'erreur que vous recevez.