2013-11-02 252 views
0

好吧,所以我想要完成的是一個簡單的登錄頁面(adminlogin.php),然後去一個小php文件(session.php),它啓動一個php會話並將發佈的數據存儲在會話中變量。一旦完成,php文件將重定向到管理菜單頁面(adminmenu.php)。在菜單頁上,我有一個檢查,看是否有任何會話數據已設置,這將停止訪問管理部分沒有登錄。我的問題是,它的session.php頁面似乎並沒有分配的後值到會話存儲,因爲我被重定向到登錄頁面。PHP會話存儲

登錄代碼

<?php 
require('header.php'); 
?> 
<section class="results"> 
<form id="login" method="post" action="session.php"> 
<fieldset id="login"> 
<legend>Admin Login</legend> 
<label for="username">Username:</label> 
<input type="text" name="user" id="user" size="20"><br /> 
<label for="password">Password:</label> 
<input type="password" name="pwd" id="pwd" size="20"><br /> 
<input type="submit" id="login" value="Login" /> 
</fieldset> 
</form> 
</section> 
<?php require('footer.php')?> 

會話代碼

<?php 
    echo "start"; 
    session_start(); 
    $_SESSION['username'] = $_POST['user']; 
    $_SESSION['password'] = $_POST['pwd']; 
    require('header.php'); 
    require('footer.php'); 
    header("Location: adminmenu.php"); 
?> 

菜單代碼

if(!isset($_SESSION['username'])) { 
    header("Location: adminlogin.php"); 

    } else { 
    ... 
    } 

回答

4

你不能有session_start之前任何輸出,因爲它必須設置頭。刪除您的echo聲明,我敢打賭它的工作

+1

技術只適用於基於cookie的會話,但是這實際上是*所有*他們 – 2013-11-02 03:50:47

+0

的我已經試過了,但不幸的是它結束了做基於提供的信息,同樣的事情 –

0

好吧,所以我已經弄清楚是什麼問題。

在session_start()需要在每一頁上任何使用會話存儲之前被稱爲

我是假設它是隻需要初始化一個會話下,但它實際上是用於調用存儲的所有會話變量以便可以使用它們。

感謝所有幫助

+1

,Machavity的回答是正確的。 – 2013-11-02 07:28:42