2015-02-09 54 views
5

我正在做一個大學的數據庫項目,我正在努力解決這裏的一個問題。 我試圖在沒有會話時顯示「登錄」,並在有會話時顯示「註銷」。 但實際上,即使在我登錄後,它仍然顯示我「登錄」,我試圖print_r($ _ SESSION);它告訴我,該變量未定義

我有一個註銷文件:

<?php 
session_start(); 
session_destroy(); 
header("Location:index.php"); 
?> 

和的init.php文件:當我登錄

<?php 
session_start(); 
?> 

的init.php被調用。

這裏是的index.php的一部分:

<?php 
    require 'db/connect.php'; 
    require 'functions/security.php'; 
    ?> 

    <html> 
     <head> 
      <title>Home</title> 
      <meta charset="UTF-8"> 
      <link rel="stylesheet" href="css/common.css"> 
     </head> 
     <body> 
      <div id="linking">  
    <?php 
    //print_r($_SESSION); 
    if (session_status() === PHP_SESSION_NONE) { 
     ?> 
        <a href="login.php">Log In</a>   
        <?php 
       } else { 
        ?> 
        <a href="logout.php">Log Out</a> 
        <?php 
       } 
       ?> 
       <a href="new_customer.php">Register</a> 
       <a href="trips.php">Search for trips</a> 
      </div> 
      <hr> 
      <section id="section"> 
+0

你必須調用'在session_start()'IV ** **每一個文件。也就是說,在'index.php'的最開始放置'session_start()'就可以了。 – mudasobwa 2015-02-09 10:06:30

+2

@AhosanKarimAsik這是一些更糟的建議 – Daan 2015-02-09 10:08:51

+0

事情是我需要init.php在index.php的頂部,然後我總是有一個會話開始,不是嗎? – 2015-02-09 10:09:38

回答

3

當您的登錄頁面成功登錄時。

session_start(); 
$_SESSION['user_logged_in'] = true; 

在你登出頁面

session_start(); 
unset($_SESSION['user_logged_in']); 
session_destroy(); 

在您的主頁

<?php 
    session_start(); 
    if(isset($_SESSION['user_logged_in'])) { 
?> 
    < a href='logout.php'>Logout</a> 
<?php 
    } 
else { 
?> 
    < a href='login.php'>Login</a> 
<?php 
    } 
?> 
+0

這解決了我的問題,非常感謝 – 2015-02-09 10:16:33