2014-05-04 36 views
0

首先在我的設置背景的全部一點點的會話變量:持續期跨頁

  • 我有一個本地域名設置,projects.lumesse.com。
  • 在IIS 7上運行的PHP版本是5.4.16。
  • Chrome(最新穩定版本)測試。

的問題如下:

我稱之爲「的getVariable」的功能如下:

function getVariable($name, $default = "") { 
    if(isset($_POST[$name])) return $_POST[$name]; 
    if(isset($_GET[$name])) return $_GET[$name]; 
    if(isset($_SESSION[$name])) return $_SESSION[$name]; 
    return $default; 
} 

要通過這個功能一行行,如果它存在,它返回變量後,其次是get變量,後面是會話變量,後面是默認值(如果其他都不存在)。

在另一包括,包含後直接功能包括,我有以下行:

$_SESSION["Language"] = getVariable("Language", "FR"); 

如果我把語言也能正常工作= DE - 該網站顯示,在德國預期。但是從上面的行我預計,如果我刪除querystring語言是持久的。

第一次打這個頁面時,用Language = DE,它應該返回get變量。上面的行然後設置會話變量。之後對此函數的任何調用都會返回會話變量,對吧?

實際上,在沒有語言參數存在的情況下,即使我事先設置了語言,它實際上也會返回默認的FR。

關於我失蹤的任何想法將不勝感激。

+0

這種抽象讓我很失望。難道你不能用簡單的方法來做:if(!isset($ _ SESSION ['Language'])){$ _SESSION ['Language'] = $ _GET ['Language']; } else {$ _SESSION ['Language'] ='FR'; }' –

+0

只要確定:你確定你沒有忘記事先用'session_start()'啓動會話嗎? – pixeline

+0

好吧,我現在覺得很笨 - 忘了所有重要的'session_start()'。感覺像這樣一個小白菜。 – ClarkeyBoy

回答

0

找到了答案 - 我習慣於在經典的ASP和.net中編碼,不需要一行來初始化會話。解決方法是將session_start()放在主包含文件中。

+0

經典的ASP :)是否還有網站,保持10年的死技術:))) –

+0

大聲笑耶 - 我們的產品之一是用經典ASP。關於以另一種語言重建它的辯論一直存在,但它非常穩定,所以我們沒有看到有必要這樣做。 – ClarkeyBoy