2012-10-30 67 views
0

我最初在銀線紋理論壇上問過這個問題。 http://www.silverstripe.org/data-model-questions/show/21293僅在刷新頁面時纔會顯示銀條紋會話變量

我想從各種Google地理位置廣告中獲取一個變量,以根據廣告中的number = xxx更改電話號碼。

的數字顯示一個默認值,除非頁面被刷新,則顯示變量值。

是否有這樣做,將顯示變量數,而無需刷新頁面的更好的辦法?

在page.ss

<% if phonenumber %>$phonenumber <% else %>0800 xxx xxx<% end_if %> 

在page.php文件

public function Phonenumber() { 
ob_start(); 
    if (!isset($_SESSION)) { 
    @session_start(); 
    } 
    if (!isset($_SESSION['number'])){ 
    $phonenumber = $_GET['number']; 
    $_SESSION['number'] = $phonenumber; 
    } 
ob_end_flush(); 
return strip_tags (Session::get ('number')); 
} 
+0

請問define.php是什麼意思,爲什麼你已經把這個代碼排除在了define.php上? – Zauberfisch

+0

爲什麼擺弄會議?一個簡單的「return $ _GET ['number']」應該很好,不是嗎? (當然,出於安全原因,您應該轉義它) – schellmax

+0

defines.php用於將$ phonenumber設置爲googel位置廣告中的變量'?number = 123456'。當用戶登陸該網站時,他們需要將電話號碼設置爲任何他們的位置,並且這在訪問期間不得改變。是我爲什麼擺弄會議。這項工作,但只有當頁面刷新。 –

回答

1

本傑明·史密斯建議,你可以回到你走出的$ _GET
數量嘗試以下操作:

php

public function Phonenumber() { 
    if (isset($_GET['number'])) 
     $number = $_GET['number']; 
    else 
     $number = Session::get('number'); 
    $number = strip_tags($number); 
    Session::set('number', $number); 
    if ($number) 
     return $number; 
    else 
     return '0800 xxx xxx'; 
} 

模板

$Phonenumber 

也,我敢肯定你不需要使用ob_start()也不需要啓動會話(silverstripe已經開始在這一點上的會話已)

+0

這是按預期工作的。感謝您在這裏的堅持,但目標職位已稍微移動......我現在有幾頁針對有機物品清單,其中沒有使用變量。但我仍然需要在會話中獲得本地號碼。我創建了一個新的$ StaticNumber文本框,在其中輸入數字。在header.ss我有這個'<%​​如果PHONENUMBER%> $ PHONENUMBER <% else %><%如果StaticNumber%> $ StaticNumber <% else %> 0800 XXX XXX <% end_if %><% end_if %>'。如何將$ StaticNumber設置爲會話變量? @zauberfisch –