2011-01-10 3 views
1

非常に問題があります。別のページにリダイレクトした後にsession_id()を取得するときにエラーが発生する

Post/Redirect/Getパターンを使用してPHPでログインフォームを開発したいと考えています。ログインフォームを含むページが、このようなものです:デバッグの目的のために

<?php 
    if (try_login()) { 
    session_regenerate_id(); 
    session_start(); 
    header('Location: main.php'); 
    exit(); 
    } 
?> 
<html> 
    <head> 
    <!-- etc, etc --> 
    </head> 
    <body> 
    <form action="<?php echo htmlentities($_SESSION['PHP_SELF']); ?>" method="post"> 
     <!-- etc, etc--></head> 
    </form> 
    </body> 
</html> 

main.phpは、私だけが正常にログインした後main.phpに取られて、私のsession_id()を示すことを期待

<?php 
    echo htmlentities(session_id()); 
?> 

が含まれています。しかし、自分でログインフォームをテストすると、main.phpにリダイレクトされますが、私のsession_id()は表示されません。私のコードに何が問題なのですか?

+1

'session.auto_start'を使用していない限り、セッションデータに応じて*すべての*ページで' session_start() 'を使って明示的にセッションを開始する必要があります。 –

+0

すみません言い訳はありますが...どうしたの?実際には起動していなくても、セッションを再開しても 'session_start()'を使用する必要がありますか? – pyon

+0

プログラミング時には、ドキュメントを読んではいけません。 HTTPはステートレスであることを忘れないでください。これは、前のページで何かを呼び出したことをサーバーが知らないことを意味します。それはページ要求を持っていることだけを知っています。だからあなたはセッションで何かをする前にsession_start()を呼び出さなければなりません。 http://www.php.net/manual/en/session.examples.basic.php –

答えて

3

session_start()main.phpに電話する前に、セッションを取得する必要があります。

関連する問題