2016-03-21 19 views
1

私はセッションについてかなり不安です。私はユーザーがログインできるサイトを作っています。あなたがログインしているかどうかにかかわらず、私のすべてのページはheader.htmlを呼び出しています。だから、誰もが、私は次のコードを持って見ることができます私のindex.php、上:セッション開始のインクルード

**index.php** 
<?php 
    if(!isset($_SESSION['username'])) include('resources/auth/login.php'); 
      else exit(header('Location: home.php')); 

       if(!isset($_SESSION)) session_start(); 

    if(isset($_GET['todo']) && $_GET['todo'] == 'logout'){ 

     session_unset(); 
     session_destroy(); 
     //echo 'You have been logged out!'; 
    } 
?> 

<?php include 'resources/includes/header.html';?> 
<!-- A lot of code --> 
<?php include 'resources/includes/footer.html';?> 

セッションコードは、私のヘッダの前に来て、私はhome.phpにリダイレクトしています。代わりに私のヘッダーにそのセッションコードを付けるべきですか?

home.php

<?php 
    if(!isset($_SESSION)) session_start(); 
    ?> 
    <?php include 'resources/includes/header.html';?> 
     <!-- A lot of code --> 
    <?php include 'resources/includes/footer.html';?> 

だから私はちょうど私が実際に私の体中のセッションを含めておりますことを、今日以前の考え?私のheader.htmlにはセッションがないのでだから、私はheader.htmlにセッションを持たなければなりませんか?そして、どうすれば最もスマートな方法でそれを行うことができますか?

+0

'場合(ISSET($ _SESSION)!)のsession_start()は、' 'ただのsession_start()'でなければなりません。 –

+0

ご意見ありがとうございます。 header.htmlに追加する必要がありますか? – McDuck4

答えて

1

$_SESSION変数にアクセスする前に、session_start()を実行する必要があります。

これをコード化する最も安全な方法は、最初の<?phpの直後に追加することです。

のindex.php

<?php 
session_start(); 
if(!isset($_SESSION['username'])) include('resources/auth/login.php'); 

そして

<?php 
    session_start(); 
    if(!isset($_SESSION)) 

     include 'resources/includes/header.html'; 

     include 'resources/includes/footer.html'; 
?> 
+0

あなたの答えはありがとうございます。ヘッダーに追加する必要があると思いますか、それとも今セッションが開始されているのですか? – McDuck4

+0

これは、セッションのタイムアウトを停止するので、必須ではないにもかかわらず、すべてのスクリプトで使用することをお勧めします。ヘッダーは 'header.html'と呼ばれるので、PHPコードは実行されませんので、おそらく' header.php'を作成してそこに追加するほうがよいでしょう。 – RiggsFolly

+0

あなたの答えにはありがたいです。私は今それを理解する。私はインクルード 'session.php'を作成すると思います。 – McDuck4

関連する問題