2016-11-24 94 views
0

我想設置值爲一些基於用戶的Web服務調用自定義變量登錄或不。我使用下面的代碼,但它沒有設置變量的值。使用ini_set設置新變量

function mymodule_user_login(&$edit, $account) { 
    if ($account->uid > 0) { 
     ini_set('saf.service_value', 'user-Auth'); 
    } 
} 

function mymodule_user_logout($account) { 
    ini_set('saf.service_value', 'user-Anon'); 
} 

更新#1 的Web服務是由第三/第四方提供的,我們有沒有對其進行控制。它允許我們在.htaccess文件中設置值。由於我們使用的是Apache 2.2,因此我們無法使用指令。根據我的發現,我認爲我們不能設置不能使用init_set()設置自定義變量,我們只能允許設置預定義變量(請確認它是否正確,我沒有找到任何文檔/博客帖子符合它)。 如果我設置在.htaccess文件變量如下

php_value saf.service_value "user-Anon" 

它完美的作品,我只是想動態設置值。

+3

這是沒有意義的我。你會試圖強迫變量進入php ini來進行Web服務調用?使用會話? –

+0

「描述問題」不起作用「不是問題陳述,告訴我們期望的行爲應該是什麼。」 http://stackoverflow.com/help/mcve –

+0

也,'ini_set()',[如手冊說](http://php.net/manual/en/function.ini-set.php),是一個函數用於設置運行時PHP配置選項,而不是任意數據。我不知道你的意思是「一些自定義變量」,所以我不能再幫你了。 –

回答

0

我不太清楚爲什麼要這樣做,如果目的是拒絕訪問某些節點(如果連接或不連接),則有很多模塊(node_access,...)。

但是正如Mad Dog所說,init_set()只是在執行的時候才工作,這意味着,只有當有人登錄或某人註銷時纔會設置它,而不是當他們將要探索網站時順便說一句2登錄/註銷。

您想要使用hook_init()(如果沒有緩存)或hook_boot()並測試用戶是否連接。所以每次執行PHP時,它都會被設置。

類似的東西:

/** 
* Implements hook_boot(). 
*/ 
function mymodule_boot() { 
    global $user; 

    // if user is connected in Drupal 
    if ($user->uid != 0) { 
    ini_set('saf.service_value', 'user-Auth'); 
    } 
    else { 
    ini_set('saf.service_value', 'user-Anon'); 
    } 
}