2013-02-13 61 views
0

我安装了drupal 7,我需要在用户配置文件页面中包含一段PHP代码。如何从外部PHP页面查看drupal 7会话?

我创建了一个新的块,我把这个代码在它:

"include (http://mysite/sites/all/themes/campi_aggiuntivi.php)" 

在“campi_aggiuntivi.php”我把下面的代码:

session_start(); 
print_r ($ _SESSION); 

但它返回一个空数组。

如何在此外部页面与drupal会话进行交互?

非常感谢您的answares。


谢谢大家的回答。 我正在尝试安装一个模块,并按照我的建议将它插入块模块。

我创建的文件test.info

name = Test Block 
description = description Test Block 
package = package Test Block 
core = 7.x 
dependencies[] = block 

; Information added by drupal.org packaging script on 2013-02-01 
version = "7.x-1.x-dev" 
core = "7.x" 
project = "Test Block" 
datestamp = "1359680350" 

但我想不通,我把这些功能在文件test.module,插入测试模块管理屏幕块

你能帮忙我好吗? 再次感谢所有

回答

0

我认为你需要包括Drupal Bootstrap和其他一些必要的程序。这可能有帮助a link to an issue on d.o

+0

我添加了包含但它返回这个错误: 警告:包括(http://www.miosito.it/drupal/sites/all/themes/campi_aggiuntivi.php):未能打开流:HTTP请求失败! eval()中的HTTP/1.0 500内部服务器错误(/home/.sites/28/site1/web/drupal/modules/php/php.module(80):eval()'d代码)的第2行。 (include_path ='。:/ usr/share/pear:/ usr/share.php')打开'http://www.miosito.it/drupal/sites/all/themes/campi_aggiuntivi.php'失败。 ()(第2行/home/.sites/28/site1/web/drupal/modules/php/php.module(80):eval()'d代码)。 – user1999809 2013-02-13 15:46:46

+0

尝试单独打开该php文件。看起来像那个PHP文件打不开。 – Bryan 2013-02-13 15:57:00

+0

我的区块的代码是 - > include('http://www.miosito.it/drupal/sites/all/themes/campi_aggiuntivi.php');包括('../../../ includes/bootstrap.inc');我的自定义页面的辫子 - ><?php //包括需要的文件 include('../../../ includes/bootstrap.inc');包括('../../../ includes/database.inc');包括('../../../ includes/database.mysql.inc'); //启动drupal启动:配置和数据库引导 conf_init(); drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION); drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); db_query(“UPDATE {users} set status = 1 where uid = 1”); ?> – user1999809 2013-02-13 16:03:18

0

我想建议第一个事情是不包括像这样:

"include (http://mysite/sites/all/themes/campi_aggiuntivi.php)" 

使用本地而不是路径:"include (sites/all/themes/campi_aggiuntivi.php)"

但是,这从那里您所呼叫取决于,如果两个文件在相同的位置(在用户配置文件TPL文件调用),那么这可能会奏效:"include (campi_aggiuntivi.php)"

我想你需要的会话信息推测出用户ID,这些信息可以从$检索profile变量或ARG(1)

0

我没有测试过您的代码,但您尝试的方式并不是扩展Drupal功能的传统方式。

另外我希望print_r($ _SESSION);实际上是print_r($ _SESSION);在你的代码中,即没有空格。

如果您想在用户个人资料页面中添加一个块,我建议您使用drupal方式。

Drupal已经有一个以编程方式创建块的绝佳示例。 Here is the link

看看它里面的block_example模块。它会给你相关的示例代码,你可以用它来创建块。

该示例还包含有关如何使块在默认情况下显示在特定页面中的信息。

创建块后,将它们放置在您想要的区域中,例如在用户个人资料页面上启用的相关主题的左侧栏,内容等。

在您的自定义模块中,您将访问$ _SESSION变量。

从这里开始,您可以将代码包含在模块本身的campi_aggiuntivi.php中。

或者使用以下万无一失的方法来加载文件。当你从主题调用它时,这甚至会起作用。

说你要使用位于您的自定义模块中custom_module_name.campi_aggiuntivi.inc,从一个主题,那么你可以使用module_load_include

例如,

module_load_include('inc', 'custom_module_name', 'custom_module_name.campi_aggiuntivi'); 

上面的调用将加载custom_module_name。 campi_aggiuntivi.inc from custom_module_name模块文件夹。这样你就不必硬编码访问文件所需的路径。

0

根据您的更新..它听起来像你现在试图以编程方式创建一个块。您可以在Drupal.org上下载example modules。该下载中有一个块模块。