2013-06-30 110 views
0

我的tmp目錄不能被php.Hence訪問,會話不能真正的工作(而他們不) 但在這種情況下,他們做某些未知的原因。Php會話奇怪的行爲

這裏的情景,

我有一個網頁的index.php它驗證一個用戶的憑據,並設置會話變量,將用戶重定向到panel.php

if($verified) 
{ 
$_SESSION['unid']=$unid; 
$wel="Welcome :"; 
$_SESSION['una']=$user; 
$_SESSION['level']=$lev; 
$_SESSION['pas']=$pass; 
$_SESSION['wel']=$wel; 
header("location:panel.php"); 
} 

在panel.php我有代碼,

<?php 
ob_start(); 
if(session_id()==''){ 
session_start(); 
} 

if($_SESSION['una'] == "") 
{ 
header("location:index.php"); 
} 

當我通過的index.php登錄,儘管會話的數據無法讀取,panel.php打開喜歡它通常會與會議

刷新頁面後,會話消失,頁面重定向!

對此行爲的任何解釋?

PHP V5.3.10

+0

你在哪裏開始'index.php'上的'Session'? – Boris

+0

在第一行,我有session_start(); –

回答

0

你總是需要在你的頁面開始打電話session_start()。它實際上並不啓動新會話,而是初始化會話,包括加載會話變量。這通常是你做的第一件事,通常不僅僅是在你當前的panel.php中。

+0

我只需要一個邏輯來解釋爲什麼會話條件得到滿足,或者在會話永不存儲的情況下,在接下來的頁面上似乎滿意了! 我知道session_start()需要放在開始處..但是我故意按照它的方式設置代碼。 我可以登錄並立即將請求(修改標題)重定向到另一個頁面(它也需要登錄)並且它可以工作!但在第一次請求之後,會話恢復正常行爲。 –

+0

如果未存儲會話信息,則在每個請求結束時,所有會話信息都將消失。所以,當你指向另一個頁面時,其他頁面將不知道任何前一個會話變量。重定向實際上只是一個新的請求。這只是響應中的一個標題,它告訴瀏覽器執行新的請求。並不是說會話信息在某種程度上部分是持久的,如果你足夠快...... – GolezTrol

+0

確切地說!這就是爲什麼我開始這個線程的原因.. 這正是我在我的頭上,但這個奇怪的案例讓我思考! 我想它與服務器的配置有關。 –