2011-03-10 69 views
1

我對會話變量有一個很奇怪的問題。 這個var是一個關聯數組。我在一個頁面(頁面A)創建了很多可過濾的項目。我保存過濾器會話中的無功

$_SESSION['filter'] = Array ('m' => 'acrylic', 'a' => 'P', 'c' => 1960); 

用戶可以去詳細頁面(B),但在這裏我有

$_SESSION['filter'] = Array ('m' => 'acrylic', 'a' => 'P'); 

奇怪的是,當我去我的詳細信息頁面我錯過關聯數組 中的最後一項,因此我無法返回正確的過濾器信息。

我建立會話VAR在這個函數中,選項是通過在URL例如:http://www.web.com/artworks/a-P/c-1960/o-private+collection這個URL

參數的$ args將是這個數組( 'A-P',「C-1960年「鄰私人收藏+」)

private function filter($args){ 
     // options 
     $f = array('a','c','u','t','m','o'); 
    $a = array(); 

    foreach($args as $i){ 
     $t = explode('-', $i); 
     if (in_array($t[0], $f)){ 
      $a[$t[0]] = urldecode($t[1]); 
      $this->suffix .= '/'.$i; 
     } 
     else if(is_numeric($i)) 
      $a['pp'] = intval($i); 
    } 
    $_SESSION['filter'] = $a; 

    return $a; 
} 

我把這個頁面A,在頁面BI不調用此函數的唯一作用是

if (isset($_SESSION['filter'])){ 
print_r($_SESSION); 
... 

有人能幫助我嗎? 謝謝

+0

請確保在會話變量上沒有采取任何意外操作,請嘗試使用'$ _SESSION ['filter2']'看看會發生什麼 – Basic 2011-03-10 10:36:56

+0

我嘗試了filter2,而不是解決 – Paolo 2011-03-10 10:42:40

+0

執行'print_r($ _ SESSION) '在返回$ a之前'告訴我們打印出來的內容。 – Jon 2011-03-10 10:47:07

回答

1

在將新值添加到$_SESSION之前,您必須在腳本某處調用session_start否則它們將不會持續。你做那個?

+0

網絡應用程序調用session_start作爲第一步,也使用其他會話變量 – Paolo 2011-03-10 10:44:05

0

我不確切地知道,但嘗試給報價中的最後變量值。

+0

有6個過濾器選項數字和字母數字,我嘗試了很多組合,但沒有解決 – Paolo 2011-03-10 10:46:03