2016-09-24 3 views
-1

Ich begann mit der Entwicklung einer Plattform hauptsächlich in PHP und Sitzungen funktionierte gut, bis ich meinen Apache Server gestoppt und begann, es eine Woche später zu arbeiten.

Das ist mein Problem:

index.php

<?php 
    include_once 'backend/login.php'; // DB connect + functions   
    include_once 'menu.php';   // menu include 
    check_logout();      // check if user logged out 
?>  
<?php 
    include_once 'widgets/widgets.php'; // widgets : login, agenda, events, languages 
    include_once 'footer.php';   // footer 
?> 

Also im Grunde das ist die PHP-Teile meiner Seite sind (der Rest ist HTML). backend/login enthält Login-Funktionen (und diese Datei selbst beinhaltet die Anmeldung in der DB, gefolgt von session_start()).

home.php

<?php 
     include_once 'backend/login.php';   // connect to DB, login functions 
     include_once 'backend/load_feed.php';  // feed functions   
     include_once 'menu.php';     // include main menu 
     ?> 
     <script> 
      alert("<?php echo $_SESSION['first_name']; ?>"); 
     </script> 
     <?php   
     check_login();        // ensure user is logged in 
    ?> 

Wenn die Anmeldung auf index.php (Form in widgets/widgets.php versteckt ist) gültig. Es ändert die window.location zu home.php. Das Problem ist, dass $ _SESSION die während der Anmeldung gespeicherten Informationen nicht enthält.

dbconnect.php

<?php 
/* 
remote script used to conenct to the database 
*/ 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "DB"; 

// create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// check connection 
if($conn->connect_error){ 
    die("Connection failed : " . $conn->connect_error); 
} 
session_start(); 
?> 

Dies ist das Skript verwendet, um die Datenbank zu verbinden, funktioniert es richtig (ich bin in der Lage, die Gültigkeit der Benutzerdaten zu überprüfen)

Ergänzende Info :
- Ich habe überprüft, dass alle gespeicherten Informationen in $ _SESSION beim Einloggen gespeichert werden. (Informationen sind im Bereich der Funktion vorhanden).
- Alle Dateien, die $ _SESSION benötigen, enthalten (direkt oder über andere Includes) die Datei dbconnect.php, was den Zugriff auf $ _SESSION ermöglicht.
- Es wird keine Ausgabe generiert, bevor session_start() aufgerufen wird;

Hat jemand eine Ahnung von was könnte die Quelle meines Problems sein?

Antwort

1
<?php 
    session_start(); 
    include_once 'backend/login.php'; 
    include_once 'menu.php'; 
    check_logout(); 
    include_once 'widgets/widgets.php'; 
    include_once 'footer.php' 
?> 

Versuchen Sie dies!

Ich hoffe, das funktioniert & auch eine Sache, die Liste der Dateien, die Sie oben enthalten haben, bitte stellen Sie sicher, dass Sie session_start() nicht wieder in diesen Dateien aufgerufen haben, eigentlich ist es egal, aber immer noch geben Versuchen.

Auch wie Sie sagen, dass die Funktion gibt Problem, bitte auch den Schnappschuss des Fehlers, so dass es mir mehr hilfreich wäre, den Fehler zu verstehen.

+0

habe ich ausprobiert ! Es scheint nicht zu funktionieren. Die Funktion hat überhaupt kein Problem, es verwendet $ _SESSSION ohne jedes Problem. Tatsächlich hat index.php perfekten Zugriff auf $ _SESSION, aber irgendwie hat home.php nichts davon. – TanguyH

+0

// plazieren Sie diese Funktion in der ersten Zeile in Ihrer home.php-Datei, nachdem Sie das

+0

Das habe ich gerade versucht, aber durch Hinzufügen und Entfernen einer Zeile scheint die Sitzung wieder aktiv zu sein (ohne dass session_start() verwendet wird). Ich verstehe nicht, was gerade passiert ist, aber danke! ;) – TanguyH

0

Ich glaube, Sie erste session_start() nach this nennen sollte, aber ich bin nicht ganz sicher,

+0

Ich habe es schon versucht, aber ändert nichts.Und da session_start() am Ende von dbconnect aufgerufen wird und durch die anderen includes eingeschlossen ist, stelle ich mir vor, dass das Ergebnis gleich ist. – TanguyH

0

Sie session_start() Funktion am Anfang des home.php und versuchen Sie es erneut aufrufen müssen.

+0

Funktioniert nicht (es war eines der ersten Dinge, die ich natürlich probiert habe) – TanguyH

0

Sie können versuchen, sesion_start(); oben im Dokument vor Include-Dateien hinzuzufügen.