2012-10-30 1 views
0

이 질문은 Silverstripe 포럼에서 원래 질문했습니다. http://www.silverstripe.org/data-model-questions/show/21293Silverstripe 세션 변수는 페이지를 새로 고칠 때만 표시됩니다.

나는 광고에서? 수 = XXX에 따라 전화 번호를 변경하기 위해 다양한 구글의 위치 광고에서 변수를 얻기 위해 노력하고 있어요.

숫자는 페이지를 새로 고치지 않으면 기본값이 표시되고 변수 값이 표시됩니다.

페이지 새로 고침없이 변수 번호를 표시하는 더 좋은 방법이 있습니까? page.php에서 page.ss

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

에서

벤자민 스미스, 당신은 단지 다음을 시도하면 $ _GET
에서 나왔을 수를 반환 할 수 있습니다 제안
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

define.php는 $ phonenumber를 googel 위치 광고에서 '? number = 123456'변수로 설정하는 데 사용된다. 사용자가 사이트에 착륙 할 때 전화 번호는 자신의 위치가 무엇이든간에 설정해야하며 방문 기간 동안 변경해서는 안됩니다. 내가 왜 당황하고있는거야? 이는 페이지가 새로 고쳐질 때에 만 작동합니다. –

답변

1

:

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

의도 한대로 작동하고 있습니다. 여기에 귀하의 perserverance 주셔서 감사합니다,하지만 목표 게시물은 약간 이동되었습니다 ... 나는 지금 변수가 사용되지 않는 유기적 인 목록을 목표로 몇 페이지가 있습니다. 하지만 세션에서 지역 번호를 받아야합니다. 번호를 입력 할 새 $ StaticNumber 텍스트 필드를 만들었습니다. header.ss에 나는이''%% 전화 번호 %> $ 전화 번호 <% else %><% if StaticNumber %> $ StaticNumber <% else %> 0800 xxx xxx <% end_if %><% end_if %>'을 가지고 있습니다. $ StaticNumber를 세션 변수로 설정하려면 어떻게해야합니까? @zauberfisch –