2011-03-10 71 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