Search code examples
phpwordpresshttp-referer

I don't want to display ads to Facebook, Twitter Visitors


I am now using this code for facebook. "https" is active and wordpress site.

<?php

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

?>

DON'T SHOW ADS

<?php } else { ?>

SHOW ADS

<?php }   ?>

This code works for facebook. I wanted to add twitter, but when I add twitter it doesn't work at all. I tried this.

if (strpos($ref, 'facebook.com', 'twitter.com', 't.co') != false) {

It didn't work that way. If else query or "false" is correct? How can I do it in the simplest way? If the visitor comes from Facebook, Twitter, I don't want to show ads. thanks


Solution

  • strpos() does not check multiple "needles" to look for. You can store them in an array and iterate over each one individually though:

    <?php
        
        $ref = $_SERVER['HTTP_REFERER'];
    
        $sitesWithAdsHidden = [
            'facebook.com',
            'twitter.com',
            't.co',
        ];
        
        $isHiddenSite = false;
        foreach ($sitesWithAdsHidden as $site) {
            if (strpos($ref, $site) !== false) {
                $isHiddenSite = true;
                break;
            }
        }
    
        if ($isHiddenSite) {
    
    ?>
    
    DON'T SHOW ADS
    
    <?php } else { ?>
    
    SHOW ADS
    
    <?php }   ?>
    

    Note that I also changed the strpos comparison to !== because a non-strict check could lead to evaluating to false if the position is actually 0 (the start of the string).