2016-03-21 12 views
1

Ich bin ziemlich unsicher über Sitzungen. Ich mache eine Website, wo sich ein Benutzer anmelden kann. Alle meine Seiten, egal ob Sie eingeloggt sind oder nicht, rufen eine header.html auf. Also auf meinem index.php, die jeder sehen kann ich den folgenden Code haben:Session Start gehören

**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';?> 

Der Sitzungscode kommt vor meinem Header, und ich bin zu home.php umgeleitet. Soll ich diesen Sitzungscode stattdessen in meiner Kopfzeile haben?

home.php

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

So von Ich dachte nur, früher heute, dass ich eine Session in meinem Körper tatsächlich bin auch? Weil ich in meinem header.html nichts mit Sitzungen habe. Also sollte ich die Sitzung in meinem header.html haben? Und wie kann ich das am cleversten machen?

+0

'if (isset ($ _SESSION)!) Session_start();' sollte gerade sein 'session_start()'. –

+0

Vielen Dank für Ihren Kommentar. Sollte ich das zu meiner header.html hinzufügen? – McDuck4

Antwort

1

Die session_start() muss immer ausgeführt werden, BEVOR Sie versuchen, auf $_SESSION Variablen zuzugreifen.

So ist der sicherste Weg, es zu codieren, es immer nur nach Ihrem ersten <?php im Skript hinzuzufügen.

index.php

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

Und

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

     include 'resources/includes/header.html'; 

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

Danke für Ihre Antwort. Denkst du, ich sollte es meiner Kopfzeile hinzufügen, oder ist es in Ordnung, wo die Sitzung jetzt gestartet wird? – McDuck4

+0

Es ist eine gute Idee, es in jedem Skript zu haben, auch wenn es nicht erforderlich ist, da dies das Timing der Sitzung stoppt. Da Ihre Kopfzeile 'header.html' genannt wird, wird der PHP-Code nicht ausgeführt, also wäre es besser, eine' header.php' zu erstellen und sie dort hinzuzufügen. – RiggsFolly

+0

Vielen Dank für Ihre Antwort. Ich verstehe es jetzt. Ich denke, ich werde dann eine 'Session.php' hinzufügen. – McDuck4