2013-03-25 103 views
1

我正在用PHP開發一個應用程序,我需要使用會話。 我用三層體系結構開發了我的應用程序。刷新後PHP會話無法檢測

我只使用一個PHP頁面和啞表單來提交用戶動作,並且所有處理都是通過實體/函數特定的類進行的。

當頁面第一次打開時,我檢查變量,如果它從未打開過,我提出登錄表單。

當我收到此表後我檢查用戶時,如果用戶確定我開始會話

if(isset($_POST['login'])) 
{ 
    if($_POST['login']=='login') 
    { 
     //valida user 
     $accoes=$du->login($_POST['username'],$_POST['password']); 
     if($accoes===false) 
     { 
      echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">"; 
      echo "alert('Erro no Login');"; 
      echo "</SCRIPT>"; 
      unset($accoes); 
     } 
     else 
     { 
      //utilizador valido 
      echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">"; 
      echo "alert('Utilizador válido');"; 
      echo "</SCRIPT>"; 
      session_start(); 
      $user="teste"; 
      $screen="logged"; 
      $_SESSION['user']=$user; 
     } 
    } 
} 

雖然當這個頁面是通過用戶操作刷新我無法看到會議ID和會話變量。

我是否缺少類似session_commit或其他指令的內容?

session_start()在嘗試切換會話變量之前是否也出現?

它可能是PHP.ini文件中缺少的東西?

當我重裝我做的第一件事是會話變量檢查

if(session_id() != '') { 
    $user=$_SESSION['user']; 
} 

我知道我應該知道如何解決這個問題,但直到現在我用PHP的經驗是扔的Flex/Flash的那麼會話管理並不是真的有必要。

感謝您的幫助

+0

沒有你叫在頂部爲每個頁面的session_start()? – 2013-03-25 16:36:59

+0

*應該session_start()也出現在試圖chech會話變量之前?*是 – Tchoupi 2013-03-25 16:38:40

回答

1

一兩件事,我一定能夠指出你的..在session_start()應該是第一線打開PHP tahg

<?php 
    session_start(); 

後,它應該在每一頁上被稱爲其中$_SESSION被稱爲.. 否則會議將無法正常訪問

+0

鏈接:http://www.php.net/manual/en/function.session-start.php – alwaysLearn 2013-03-25 16:41:58

+0

我只有當用戶有成功登錄,因爲在POO願景中它似乎更加邏輯!但是當它失敗時,我開始認爲它可能是它!但我需要確定!謝謝! – davidmr 2013-03-25 18:21:11

+0

但是,我只想使用一個頁面,並根據下圖所做的處理更改其內容!即使如此,在我需要維護會話控制的呼叫之間!如果我在頂部使用session_start(),我應該如何傳遞會話ID? Via Post?它自動完成?大聲笑!如此愚蠢!它通過客戶IP和瀏覽器完成!該會話甚至可以在登錄之前存在!這一切都是由我放入它的可供選擇的東西完成的!我厭倦瞭解它,但我缺乏經驗! – davidmr 2013-03-25 18:24:46