Überprüfen Sie, ob der Sec-GPC-Wert im HTTP-Anforderungsheader in WordPress vorhanden ist
P粉930534280
P粉930534280 2023-08-31 13:34:53
0
1
584
<p>如何检测 HTTP 请求标头中是否存在„Sec-GPC:1“?</p> <pre class="brush:php;toolbar:false;"><?PHP function discover_gpc_signal() { if (isset($_GET['Sec-Gpc'])) { echo 'GPC-Signal in GET-Daten erkannt'; } elseif (isset($_POST['Sec-Gpc'])) { echo 'GPC-Signal in POST-Daten erkannt'; } elseif (isset($_COOKIE['Sec-Gpc'])) { echo 'GPC-Signal in COOKIE-Daten erkannt'; } elseif (isset($_SERVER['Sec-Gpc'])) { echo 'GPC-Signal in SERVER-Daten erkannt'; } anders { echo 'Kein GPC-Signal erkannt'; } } add_action('wp_footer', 'detect_gpc_signal'); ?></pre></p>
P粉930534280
P粉930534280

Antworte allen(1)
P粉311464935

感谢您建议 getallheaders()。在你的帮助下,我找到了两种方法,使用和不使用 Javascript。

/* Add GPC Banner to WP Header */
function display_gpc_signal_banner() {
echo '<section id="headerBannerGpc" class="bg-color"><div 
class="container detect-gpc-signal py-1 small"><span class="alert- 
circle"></span> Global Privacy Signal Detected</div></section>';
}
add_action('wp_head', 'display_gpc_signal_banner');

// Detect GPC Signal with Javascript
function detect_gpc_signal_js() {
?>
  <script>
  if(navigator.globalPrivacyControl == true ) {
    // Add a class to the body tag -- This makes the GPC banner visible
    document.body.classList.add('gpc-signal-detected');
    document.getElementById('headerBannerGpc').style.display = "block";
  } else {
    // Add a class to body tag declaring the GPC signal was not detected
    document.body.classList.add('no-gpc-signal-detected');
    document.getElementById('headerBannerGpc').style.display = "none";
  }
  </script>
  <?
}
add_action('wp_footer', 'detect_gpc_signal_js');

// Add a unique class to the body tag when GPC signal is detected
function detect_gpc_signal_body_class( $classes ) {
$headers = getallheaders();
if($headers['sec-gpc'] == 1) {
  $classes[] = 'gpc-signal-detected-no-js';
} else {
  $classes[] = 'no-gpc-signal-detected-no-js';
}
return $classes;
}
add_filter( 'body_class', 'detect_gpc_signal_body_class' );

更新

当将 HTTP_ 添加到值中时,原始函数将起作用。

if (isset($_GET['HTTP_SEC_GPC'])) {
  echo 'GPC signal detected in GET data';
  } elseif (isset($_POST['HTTP_SEC_GPC'])) {
  echo 'GPC signal detected in POST data';
  } elseif (isset($_COOKIE['HTTP_SEC_GPC'])) {
  echo 'GPC signal detected in COOKIE data';
  } elseif (isset($_SERVER['HTTP_SEC_GPC'])) {
  echo 'GPC signal detected in SERVER data';
  } else {
   echo 'No GPC signal detected';
  }
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage