Я не могу получить доступ к объекту global $ user из внешнего файла в Drupal 7 - PullRequest
0 голосов
/ 22 июля 2011

во внешнем файле, который я использую:

$path = $_SERVER['DOCUMENT_ROOT'];
chdir($path."/drupal");
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

global $user;
print $user->name;//it returns nothing

Этот внешний файл я загружаю с помощью AJAX.Может быть из-за этого у меня есть эти проблемы?

xmlhttp.open("GET","localhost/drupal/sites/all/themes/MyBartik/templates**team.php***?team_id="+str,true); 

Но этот код работает:

$account = user_load(2);
print $account->name;

Как я могу получить имя текущего пользователя в Drupal 7?

когда я пишу:

print_r $user; 

Возвращает:

stdClass Object ( [uid] => 0 [hostname] => ::1 [roles] => Array ( [1] => anonymous user ) [cache] => 0 ) 

вместо:

stdClass Object ( [uid] => 1 [name] => admin [pass] => $S$CyyoOFpUD2X.4w8PHsIpWVHinwFZGIG3ZS/uQCz8W/lollB7UwCT [mail] => foo@example.com... 

Вот функция AJAX:

function showTeam(str){                                     
                                             jQuery("#popup_content").fadeIn("slow");                                             
                                            if (str=="")
                                              {
                                              document.getElementById("jShowTeam").innerHTML="";
                                              return;
                                              }
                                            if (window.XMLHttpRequest)
                                              {// code for IE7+, Firefox, Chrome, Opera, Safari
                                              xmlhttp=new XMLHttpRequest();                                       
                                              }
                                            else
                                              {// code for IE6, IE5
                                              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");                                 
                                              }
                                            xmlhttp.onreadystatechange=function()
                                              {
                                              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                                                {
                                                document.getElementById("jShowTeam").innerHTML=xmlhttp.responseText;
                                                }
                                              }

                                            xmlhttp.open("GET","http://localhost/drupal/sites/all/themes/MyBartik/templates/team.php?team_id="+str,true);                           xmlhttp.send();                                     
}

1 Ответ

4 голосов
/ 26 марта 2013

Просто была такая же проблема (с точно таким же кодом). Я уверен, что в последние два года OP продолжал работать, но я оставлю это здесь для вас - да, вы, читатель.

Открыть этот файл:

sites/default/settings.php

И около строки 328 есть закомментированная строка типа

#$cookie_domain = '.example.com';

Раскомментируйте его и добавьте туда свой домен, не забудьте оставить в префиксе точку. Вам придется снова войти в систему, и это должно сработать.

...