2014-01-06 4 views
4

Javascript로 MyBB PHP 변수를 가져올 수 있습니까? 나는 userscript 코더입니다, 그리고 지금 내가 사용Javascript로 MyBB PHP 변수에 액세스

var uid = $("#panel").find('a').attr('href').replace(/[^0-9]/g, ''); 

는 현재 사용자의 사용자 ID (UID)를 잡아. 그러나 PHP를 사용하여 사용자로부터 UID를 가져 오는 경우 다음과 같이 보입니다.

이제 실제 질문입니다. $mybb->user['uid']을 사용하여 Javascript를 통해 UID를 가져올 수 있습니까?

+1

서버에 대한 액세스 권한이 없습니다. PHP는 서버 측이므로 클라이언트에서만 실행되고 서버 측 PHP에 액세스 할 수없는 사용자 스크립트를 작성하는 경우 PHP 변수를 사용할 수 없습니다. 귀하의 jQuery 방법은 여전히 ​​당신이 클라이언트 측 주입 스크립트를 작성하고 있기 때문에 아마도 이것을 수행하는 가장 효과적인 방법 일 것입니다. 서버 측 코드에 액세스 할 수있는 경우 AJAX를 사용하거나 PHP 변수가있는 JS 코드를 출력하여 JS 변수를 설정해야합니다. – Ennui

+0

그게 내가 생각한거야 ... 고마워! –

답변

0

먼저 자바 스크립트에서 PHP 서버 측 변수에 액세스 할 수 없지만 수행 할 수있는 몇 가지 해결 방법이 있습니다.

마음에 오는 첫번째는 어딘가에 html 페이지에

<script type="text/javascript"> 
    <?php echo "var uid = '". $mybb->user['uid']."';" ?>; 
</script> 

이 단점이 변수는 이제 직접 DOM의 수 및 편집 가능한 볼된다는 점이다 이것을 넣어하는 것입니다.

+0

어떻게 작동할까요? 정말. 그것은 userscript를위한 것이므로 페이지 어딘가에 그것을 주입 할 것입니다. –

+0

무슨 뜻인가요? 그런 자바 스크립트 블록에 작성하면 다음 자바 스크립트에서 해당 변수에 액세스 할 수 있습니다. – mituw16

2

내 대답은 예, 당신은 일 수 있지만, 약간 한계는입니다.

<script type="text/javascript"> 
<!-- 
    var cookieDomain = "{$mybb->settings['cookiedomain']}"; 
    var cookiePath = "{$mybb->settings['cookiepath']}"; 
    var cookiePrefix = "{$mybb->settings['cookieprefix']}"; 
    var deleteevent_confirm = "{$lang->deleteevent_confirm}"; 
    var removeattach_confirm = "{$lang->removeattach_confirm}"; 
    var loading_text = '{$lang->ajax_loading}'; 
    var saving_changes = '{$lang->saving_changes}'; 
    var use_xmlhttprequest = "{$mybb->settings['use_xmlhttprequest']}"; 
    var my_post_key = "{$mybb->post_code}"; 
    var imagepath = "{$theme['imgdir']}"; 
// --> 
</script> 

당신은 하나 개의 조건으로 템플리트의 MyBB의 변수를 사용할 수 있습니다 : : 그것이 상호 PHP 파일에 정의되어야 있어요 당신이 모든 headerinclude 템플릿에 기억한다면

음, 항상 이러한 코드가 있습니다. 예를 들어

(물론 그 변수는 괄호 {} 안에 있어야합니다), headerinclude 템플릿과 상호 PHP 파일 global.php입니다.

그게 전부입니다. MyBB와 함께 즐거운 시간 보내십시오.

+0

이렇게하면 변수가 문자열로 출력됩니다. 따옴표는 문자열로 정의되기 때문에 작동하지 않습니다. –

+2

당신은 무엇을 했습니까? 당신의 코드를 볼 수 있을까요? –

1

포럼에 플러그인을 추가 할 수 있습니다. 템플리트 조건문이라고합니다. 설치가 완료되면 모든 템플리트에서 Mybb-> user 변수를 사용할 수 있습니다. 이이 플러그인의 많은 응용 프로그램이 있지만, 당신의 코드를 할 수있다 :

<setvar uservar>$mybb->user['uid']</setvar> 

var {$tplvars['uservar']} = $("#panel").find('a').attr('href').replace(/[^0-9]/g, ''); 

플러그인은 아래 링크에서 MyBBHacks 포럼에 있습니다.

http://mybbhacks.zingaburga.com/showthread.php?tid=464

0

당신이 그 템플릿의 내용 내에서 정의 된 자바 스크립트 변수에 PHP 변수를 배치 할 수 템플릿을 사용하는 (또는 사용할 수 있습니다)합니다. 모든 페이지에서이 JavaScript를 실행하려는 경우 headerinclude 템플릿의 스크립트 블록에 변수 정의를 추가해야합니다.

<script type="text/javascript"> 
<!-- 
    var userID = {$mybb->user['uid']}; 
// --> 
</script> 

이 예제 스크립트는 사용자 변수 인 uid를 JavaScript 변수 userID에 배치합니다.

MyBB의 템플릿 시스템에서는 PHP 태그가 허용되지 않으므로 <?php echo $mybb->user['uid']; ?>은 작동하지 않습니다. 대신 {$mybb->user['uid'}을 사용할 수도 있습니다.

또한 플러그인을 사용하고 플러그인 파일의 함수에서 템플릿을 평가하는 경우 사용할 PHP 변수를 전역 화해야합니다.