Как мне написать условное заявление, чтобы проверить, пришел ли посетитель с определенного сайта? - PullRequest
3 голосов
/ 08 июня 2010

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

Я видел такие решения, как: $ referal = mysql_real_escape_string ($ _ SERVER ['HTTP_REFERER']);

Я хотел бы знать, если это лучший способ заставить это работать ???

- >>> хорошо, это то, что я думаю, может работать.Сторонний веб-сайт, который направляет людей на нашу целевую страницу после заполнения формы на этом сайте, может вставить в запись скрытое значение "www.sample.com" или что-то еще ... тогда я могу что-то проверитьдля этого конкретного значения и запустить условную.

Звучит ли это правильно?

Ответы [ 3 ]

2 голосов
/ 08 июня 2010

Исходя из вашего общего случая использования, я бы сказал, что лучший способ сделать это - сделать так, чтобы веб-сайт, ссылающийся на вас, передавал специальный параметр POST или GET, в зависимости от того, что подходит.

2 голосов
/ 08 июня 2010

$_SERVER['HTTP_REFERER'] - это самая надежная информация о том, откуда пришел ваш посетитель.И это совсем не надежно .Некоторые браузеры могут быть настроены так, чтобы вообще не отправлять этот заголовок, и любой может отправить дезинформацию, утверждая, что они пришли с http://ultra -secure.top-secret.government.gov / , если они чувствуют склонность.1007 *

Учитывая это предостережение, похоже, что здесь не учитывается абсолютная надежность, и вы просто надеетесь сэкономить время для посетителей с правильным набором HTTP_REFERER.

Вв этом случае наилучшим способом будет сравнение начальной части этого значения с адресом www.example.com, с которого вы ожидаете, что посетители отправятся с предварительно заполненной информацией о регистрации.

Вот пример:

$site = "http://www.sample.com/";
if (!empty($_SERVER['HTTP_REFERER']) &&
        substr($_SERVER['HTTP_REFERER'], 0, strlen($site)) == $site) {
    //if execution reaches this point, user claims he came from www.sample.com
}
1 голос
/ 08 июня 2010

Если вы не знаете, правильно ли это звучит, вам будет трудно реализовать его.

Что вы можете сделать, это:

  • Проверьте реферер.Он находится внутри переменной $_SERVER['HTTP_REFERER'], но вам не нужна строка mysql_real_escape, чтобы проверить, пришел ли пользователь с определенного сайта.Обратите внимание, что реферер в основном «определяется пользователем», поэтому вы не можете ни полагаться на него, ни доверять ему.
  • Если им все равно нужно заполнить форму, просто добавьте <input type="hidden" ...Обратите внимание, что это тоже можно подделать.
  • Добавьте параметр GET и проверьте его с помощью if( isset($_GET['ref']) ) форма будет выглядеть следующим образом <form action="http://yoursite/register.php?ref" method="POST">.
...