Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我不知道';I don’我不想向Facebook、Twitter访问者展示广告_Php_Wordpress_Http Referer - Fatal编程技术网

Php 我不知道';I don’我不想向Facebook、Twitter访问者展示广告

Php 我不知道';I don’我不想向Facebook、Twitter访问者展示广告,php,wordpress,http-referer,Php,Wordpress,Http Referer,我现在在facebook上使用这个代码“https”处于活动状态,wordpress站点。 <?php $ref = $_SERVER['HTTP_REFERER']; if (strpos($ref, 'facebook.com') != false) { ?> DON'T SHOW ADS <?php } else { ?> SHOW ADS <?php } ?> 事情不是这样的。如果else查询或“false”是正确的?

我现在在facebook上使用这个代码“https”处于活动状态,wordpress站点。

<?php

    $ref = $_SERVER['HTTP_REFERER'];
    if (strpos($ref, 'facebook.com') != false) {

?>

DON'T SHOW ADS

<?php } else { ?>

SHOW ADS

<?php }   ?>
事情不是这样的。如果else查询或“false”是正确的?我怎样才能用最简单的方法来做呢?如果访问者来自Facebook、Twitter,我不想显示广告。谢谢。

strpos()
不检查要查找的多个“针”。您可以将它们存储在一个数组中 并逐一迭代每一项:


不要展示广告
展示广告

请注意,我还将
strpos
比较更改为
==
因为如果位置实际上是
0
(字符串的开头),非严格检查可能会导致评估为false。

首先,直接从以下位置:

“referer字段是由web浏览器发送到web服务器的HTTP请求的可选部分。”

因此,您应该始终检查请求中是否存在Http引用器。您可以使用
来实现这一点!空()

然后还可以实现这一点,而无需使用
preg\u match
对数组进行迭代

if(!array_diff(['HTTP_REFERER'], array_keys($_SERVER)))
    if(preg_match('/facebook|twitter/', $_SERVER['HTTP_REFERER']))
        // todo: disable adverts
您还可以使用
null级联运算符
将其缩减为一行。如果您没有从
$\u服务器
全局变量进行进一步检查,请执行此操作

if(preg_match('/facebook|twitter/', $_SERVER['HTTP_REFERER'] ?? ''))
        // todo: disable adverts

非常感谢。我试过这个代码,但它不能正常工作。它总是显示广告。所以“else”总是出现?您是否确认
$\u服务器['HTTP\u REFERER']
在您的测试中确实包含列表中的一个域?愚蠢的我,
$ref=$\u服务器['HTTP\u REFERER']当然太低,因此它不包含值。我编辑了我的文章,使其位于顶部,现在应该可以工作了。请注意,
HTTP\u REFERER
不需要随请求一起发送。确保在访问它之前检查它不是空的,否则它将抛出异常。如果它是这样工作的。感谢Sprint out
$\u服务器['HTTP\u REFERER']
。从Twitter单击指向您的站点的链接。看看打印出来的是什么。相应地调整。(而且,
strpos
的工作方式与您认为的不同。)
if(preg_match('/facebook|twitter/', $_SERVER['HTTP_REFERER'] ?? ''))
        // todo: disable adverts