我正在尝试根据用户是否登录来为某些Web服务调用设置一些自定义变量值。我正在使用以下代码,但它没有设置变量的值。
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 网络服务由第三方/第四方提供,我们无法控制它。它允许我们在.htaccess文件中设置值。由于我们使用的是Apache 2.2,因此我们无法使用指令。有了我的发现到目前为止,我认为我们无法设置无法使用init_set()设置自定义变量,我们只能允许设置预定义变量(请确认是否正确,我没有找到任何文档/博客符合它的帖子)。 如果我在.htaccess文件中设置变量如下
php_value saf.service_value "user-Anon"
它完美无缺,我只想动态设置该值。
答案 0 :(得分:0)
我不太清楚为什么要这样做,如果目的是拒绝访问某些节点(如果连接或不连接),那么有很多模块(node_access,...)。
但正如Mad Dog所说,init_set()仅在您执行时工作,这意味着,对于您当前的解决方案,它将仅在有人登录或有人退出时设置,而不是在他们将探索网站的时候btw 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');
}
}