2013-06-08 7 views
3

phpBB3 세션 및 데이터를 외부 웹 사이트에 통합하려고합니다. 나는 이것에 대해 official resource을 따라 갔고 또한 helpful tips을 읽었지 만, 내 문제에 대한 구체적인 해결책을 찾지 못했습니다. 모든 일을 할 것, 그리고 내가 좋아하는 코드로 사이트의 데이터를 사용할 수 있습니다, 루트 경로가 잘 구성되어phpBB 세션 통합 : 기능에서 데이터 사용

<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../forums/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 

// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup(); 
?> 

: 내 사이트에

나는 다음과 같은 코드를 포함하는 phpbb.php 포함 이 (예) :

if ($user->data['user_id'] == ANONYMOUS) 
{ 
    $tpl = new USPTemplate(); 
    $tpl->load("error_nologin.tpl"); 
    $tpl->display(); 
} 
else 
{ 
    $tpl = new USPTemplate(); 
    $tpl->load("review_submit.tpl"); 
    $tpl->assign("test",'Thanks for logging in, ' . $user->data['username']); 
    $tpl->display(); 
} 

이것은 내가 사용자가 포럼에 로그인되어 있는지 여부에 따라 사용하고 템플릿 시스템과 다른 템플릿을로드 할 것이고, 그 경우, 그것은 또한 자신의 이름을 인쇄합니다. 이 모든 것은 잘 작동합니다.

내가 함수 사용하려고하면 문제는 그러나,이다 :

function print_login() { 
    if ($user->data['user_id'] == ANONYMOUS) 
    { 
     return "Not currently logged in. [ Log in ]"; 
    } 
    else 
    { 
     if ($user->data['user_colour'] != null) 
     { 
      return "Hello, <b style=\"color: #".$user->data['user_colour']."\">".$user->data['username']."</b>. [ Log out ]"; 
     } 
     else return "Hello, ".$user->data['username'].". [ Log out ]"; 
    } 
} 

을 나는 이렇게 할 경우, 함수는 심지어 내부의 phpbb.php가 포함 된 페이지에있는 경우에도 phpbb.php 자체에서는 세션이 인식되지 않고 결과는 항상 다음과 같습니다.

안녕하세요. [로그 아웃]

왜 함수가 phpBB 데이터에 액세스 할 수 없습니까?

<?php 
$a = 2; 

function test() { 
    echo $a; 
} 
?> 

이 작동하지 않기 때문에

답변

3

PHP 변수는 글로벌 변수를 참조해야하며,

<?php 
$a = 2; 

function test() { 
    global $a; 

    echo $a; 
} 
?> 

작동합니다. https://www.phpbb.com/kb

function print_login() { 
    global $user; 

    if ($user->data['user_id'] == ANONYMOUS) 
    { 
     return "Not currently logged in. [ Log in ]"; 
    } 
... 
+0

흠, 내가 ([여기] 비슷한 것을 읽은 : 당신의 기능은 내부의 전역 변수를 선언해야 작동하기 위해서는

/article/phpbb3-cross-site-sessions-integration /) : "전역 변수/전역 변수를 포함하도록 함수 또는 객체를 통해 로그인하면 $ auth 변수/클래스가 함수/객체에서 사용 가능합니다." 그러나 나는 그것을 얻지 않고 "global $ user;"를 추가했다. 줄 또는 추가 "글로벌 $ auth"줄은 아무 것도하지 않았습니다. 함수에 인수를 추가하거나 $ user를 전달하지도 않았습니다. 결과는 동일하게 유지됩니다. : X – ividyon

+0

phpbb에 포함 된 문서에서 사용자 클래스를 찾을 수 있습니까? –

+0

꽤 길기 때문에 여기 pastebin에 넣습니다. http://pastebin.com/JL5kvrYH 여기에도 몇 가지 문서가 있습니다 : https://wiki.phpbb.com/User_class – ividyon