У меня большая проблема в HTTP_REFERER

Теперь я делаю простую систему на моем сайте, и это его код

if(stc($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])){
//download directly
}else{
//open page first
}
function stc($haystack, $needle, $offset=0) {
    return strpos(strtoupper($haystack), strtoupper($needle), $offset);
}

если кто-то зашел по ссылке с моего сайта, его загрузка напрямую, и если с любого другого сайта он открыл страницу, теперь он отлично работает, но если кто-либо установил какой-либо загрузчик, такой как inernet, менеджер загрузок, сделайте ссылку напрямую, не переходя сначала на страницу. думаю, потому что теперь сделать HTTP_REFERER нулевым, как я могу сделать систему, как Rapidshare.com

1 ответ

strpos может вернуть 0.... 0, как в позиции, где может быть игла (в первой позиции в стоге сена первая позиция в строке равна 0).

strpos () возвращает false, если игла не найдена.

0 и false одинаковы в операторах if...

$ test = 0; if (! $ test) echo "0 is false";

$ test2 = false; if (! $ test2) echo "Этот тоже ложный..";

Вы должны убедиться, что это false или 0, это вы можете сделать с помощью: ===

if (strpos() === false)  echo "It's not found for sure!";

Итак, ваш код становится:

if(stc($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) !== false){
//download directly
}else{
//open page first
}
Другие вопросы по тегам