2012-05-11 16 views
0

私はログインが含まれているWebサイトを持っています。ユーザーがログインしているときに、メインページにメッセージを表示してセッションを実行します。PHPセッションが不明なエラー

私はエラー受け付けております:

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

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

私はそれにはログインしていないですエラーを表示しますが、できるだけ早く私がログインし、ページに戻りますように、それは消えます「ログインしています!」と表示されません。それは試合のためにデータベースをチェックした後にそれが必要のような...ここで

は私の認証コードです:

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'; 
    } 

エラーを引き起こすように見える私のindex.phpでの私のコード:

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

助けを賜り大変助かりました。ありがとうございました!

+0

あなたのコードのどこかで、ファイルの終わりにあるゆるいスペースが、 'session_start'の呼び出しの前に出力を引き起こしています。右の列にある無数の関連する質問をチェックしてください。 – rjz

+0

あなたがセッションで何をしていても、まずsession_start()を実行しなければなりません。 – thetrompf

+0

ありがとうございました!エラーは消えましたが、まだ問題があります...ログインしてインデックスページに戻ると、システムに「ログインしました!」と表示されません。すべての手がかりは? – DommyCastles

答えて

2

session_start()は、出力がブラウザに出力される前に呼び出す必要があります。セッションを開始する前にjavascriptスクリプトを出力するので、ヘッダーはすでに設定されているため、セッションを開始することはできません。

+0

ありがとうございました!エラーは消えましたが、まだ問題があります...ログインしてインデックスページに戻ると、システムに「ログインしました!」と表示されません。すべての手がかりは? – DommyCastles

+0

クッキーはログインに最適です。ユーザーがログインしているかどうかを含むCookieを保存し、有効期限を設定するだけです。その後、ログアウトのために、有効期限を過去の日付に設定することにより、そのクッキーを期限切れにします。また、サイドノートでは、質問をするときに受け入れる答えに同意する必要があります。そうすることで、他のユーザーがあなたが遭遇した問題の解決方法を知ることができます。 – Vulcan

+0

私はこれをどうやってやり遂げることができるかについてのアイデアはありますか? – DommyCastles

1

<?phpの宣言の前に空白があるようです。これにより、ヘッダーがsession_start()より先に送信され、受信エラーが発生している可能性があります。

関連する問題