使用ini_set设置新变量

时间:2016-11-24 14:41:39

标签: php drupal

我正在尝试根据用户是否登录来为某些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"

它完美无缺,我只想动态设置该值。

1 个答案:

答案 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');
  }
}