Использование PHP $ _SERVER [HTTP_REFERER] для отображения пользовательских приветственных сообщений / контента - PullRequest
2 голосов
/ 05 февраля 2011

Я пытаюсь отобразить настраиваемое приветственное сообщение для посетителей в зависимости от того, с какого сайта социальных сетей они приходят Я не могу заставить эту строку работать, но она отражается независимо от того, что это за сайт. Может кто-нибудь помочь мне заставить это работать? Большое спасибо!

<?php 
if (strpos("twitter.com",$_SERVER[HTTP_REFERER])==0) {
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers"; 
} 
?>

Пробовал с помощью

<?php 
if(isset($_SERVER['HTTP_REFERER'])) {
    echo $_SERVER['HTTP_REFERER'];
}
?>

чтобы заставить это работать, но не повезло.

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

strpos возвращает false, если искомое слово не появляется в строке. 0 также оценивается как ложное по сравнению с логическим значением. Так что false == 0, и ваш код всегда выполняется.

Используйте строгое сравнение, чтобы требовать совпадения как значения, так и типа вместо ==

if (strpos("twitter.com", $_SERVER['HTTP_REFERER']) === 0) {
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers";
}

Тем не менее, реферер не будет начинаться с twitter.com, он будет начинаться с http:// или https://, поэтому ваше состояние было неправильным. Для поиска twitter.com в любом месте строки:

if (strpos("twitter.com", $_SERVER['HTTP_REFERER']) !== false) {
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers";
}
0 голосов
/ 05 февраля 2011

Я думаю, что вы, возможно, перепутали strpos () с strcmp (), поскольку strcmp () возвращает 0, когда две строки равны.strpos () возвращает позицию, в которой была найдена строка.Попробуйте:

<?php
if (strpos('twitter.com', $_SERVER['HTTP_REFERER'] != 0)) {
    echo "Welcome, twitter user.";
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...