静态变量有时无法正确存储

时间:2015-08-16 22:46:13

标签: php

我使用PHP为站点上的内容安全策略生成随机数(唯一键)。我们的想法是在第一次请求时生成随机数,然后每次返回该随机数(在单个HTTP请求中)。这是我使用的代码

class Csp {
  private static $nonce = NULL;

  public static function nonce () {
    if (!isset(self::$nonce)) {
      self::$nonce = bin2hex(openssl_random_pseudo_bytes(15));
    }
    return self::$nonce;
  }
}

调用
\namespace\Csp::nonce();

每个请求都会多次调用该函数,有时会返回不同的值。例如,在发送HTTP标头和生成页面主体内容时调用该函数,有时(可能经常超过20次中的1次),在HTTP标头和主体中发送不同的值。响应,触发内容安全策略(发生了很糟糕的事情)。

此外,可能无关,当我尝试使用static::而不是self::时,我无法设置变量。我无法找到相关文档,所以我不确定它是否是一个功能。

我在Apache 2.4.10上使用PHP 5.6.9,在Debian上运行。

0 个答案:

没有答案