Silverstripe会话变量仅在刷新页面时显示

时间:2012-10-30 13:36:30

标签: php silverstripe

我最初在Silverstripe论坛上问过这个问题。 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'));
}

1 个答案:

答案 0 :(得分: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已经开始了会话)