2010-12-20 79 views
0

我已經爲登錄頁面和用戶頁面編寫了代碼。當用戶提供正確的用戶名和密碼時,我的代碼會創建一個會話變量rid,然後將用戶重定向到用戶頁面。無法保存會話值

但我面臨一個奇怪的問題,會話變量仍然在登錄頁面,但代碼重定向到用戶頁面時說Notice: Undefined variable: _SESSION in /var/www/Avatar/test1.php on line 6

只是爲了檢查會話是否正常工作,我嘗試在兩個頁面上輸出$_SESSION['rid'],它在登錄頁面上顯示rid,但在用戶頁面上出現上述錯誤。

所以我創建了兩個示例頁面test.phptest1.php。我在test.php中創建會話變量,然後嘗試在test1.php中顯示。

test.php的:

<?php 
    $result=session_start(); 
    $_SESSION["Searock"]="Searock"; 
    echo $result; 
    echo $_SESSION["Searock"]; 
?> 
<html> 
    <body> 
      <a href="test1.php">next</a> 
    </body> 
</html> 

輸出:

1 Searock下

test1.php:

<?php 
    echo $_SESSION["Searock"]; 
?> 

輸出:

注意:未定義的變量:_SESSION 在/var/www/Avatar/test1.php第2行

我不知道是否有問題是在我的代碼中,還是在PHP環境變量中。

繼承人phpinfo的屏幕截圖。 alt text

有人能指出我正確的方向嗎?

謝謝。

回答

1

除非啓用session.auto_start,否則您需要在希望會話可用的每個頁面上明確呼叫session_start

於是呼session_starttest1.php和檢查$_SESSION["Searock"]是否存在訪問之前:

<?php 
    session_start(); 
    if (isset($_SESSION["Searock"])) { 
     echo $_SESSION["Searock"]; 
    } 
?> 
+0

感謝您的額外信息。 – Searock 2010-12-21 04:44:46

1

在你test1.php文件,你缺少session_start()

<?php 
    session_start(); 
    echo $_SESSION["Searock"]; 
?> 

你需要有session_start()上使用的是會話相關的功能的任何文件頂部。

+0

+1感謝您的快速回復。 – Searock 2010-12-21 05:11:53

1

您需要在每個頁面上調用session_start()。這將開始新的會話或恢復先前保存的會話。在嘗試訪問任何$ _SESSION變量之前執行此操作,並且應該很好。

更新

貌似我被打了!

+0

+1沒問題,謝謝你的答案。 – Searock 2010-12-21 05:11:03