2015-11-03 52 views
0

我有一個方法,我在其中(兩次)訪問該值:

$_SESSION['loggedinUser']; 

第一次它工作正常,但第二次價值已丟失。

public function View($view, $model) { 
    if (! isset($_POST['regist']) 
      && ! isset($_POST['back']) 
      && ! isset($_POST['login']) 
      && ! isset($_GET['logout']) 
      && ! isset($_GET['note_list']) 
      && ! isset($_GET['file_list']) 
      && ! isset($_GET['profile']) 
      && ! isset($_GET['action'])) {  // LOGIN VIEW 
     $view->login(); 
    } 

    if (isset($_POST['regist'])) {    // REGIST 
     $view->regist(); 
    } 

    if (isset($_POST['back'])){     // BACK 
     $view->login(); 
    } 

    if (isset($_POST['login'])) {    //LOGIN AND LOGGED IN VIEW 
     $username = $_POST['user_name']; 
     $pw = $_POST['pw']; 

     if ($model->checLoginstatus($username, $pw) == true) { 
      $id = $_SESSION['loggedInUser']; // session is working fine 
      session_start(); 
      $fname = $model->getNameToSession("user", "id", $id, 'firstname'); 
      $lname = $model->getNameToSession("user", "id", $id, 'lastname'); 
      echo "" . var_dump($id); 
      $view->LoggedIn($fname . " " . $lname, null); 
     } 
    } 

    switch ($_GET['action']) { 
     case 'note_list': 
      session_start(); 
      $id = $_SESSION['loggedInUser']; // session gives back NULL 

      $title = $model->getNameToSession("note", "user_id", $id, 'title'); 
      echo "" . var_dump($_SESSION['loggedInUser']); 
      echo "" . var_dump($title); 
      echo "<a href='#'>" . $title . "</a>"; 
      break; 
     case 'logout': 
      session_start(); 
      session_unset(); 
      session_destroy(); 
      header("Location:/"); 
      break; 
    } 
} 

我在做什麼錯,價值是失去了什麼?

+0

對第二個請求做了'($ _GET ['action'] =='note_list')'嗎? – Mike

+4

''session_start()'應該在文檔的頂部,在任何輸出之前。你是第一次定義你的會話變量,並且在你使用session_start()之後;'這不起作用,我的朋友。 – entiendoNull

+0

@entiendoNull非常感謝你,這是工作! – Bbeni

回答

0

你應該在你的文檔

<?php 
session_start(); 

// rest of your code goes here 

?> 

的頂部包括session_start()沒有你之前設置不會結轉到這個頁面session_start()$_SESSION變量。