2016-11-24 71 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'); 
    } 
}