2013-02-13 62 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。該下載中有一個塊模塊。