Как использовать strstr с $ _SERVER ['HTTP_REFERER'] - PullRequest
1 голос
/ 23 февраля 2010

Я использую php, чтобы входящий трафик на мой сайт добавлял информацию в зависимости от поисковой системы. Я устанавливаю $ _SESSION ['kw'], если он еще не установлен, чтобы сообщить мне, что это seo, и добавить условия поиска:

  if (isset($result['q']))
   $_SESSION['kw'] = 'seo-'.str_replace('\\"',"X",$result['q']);

  elseif (isset($result['p']))
   $_SESSION['kw'] = 'seo-'.$result['p'];

else {some other stuff}

q - это то, что google, msn и ask используют для своих запросов, p - для Yahoo. Это покрывает большую часть входящего трафика. Хорошо, теперь я хочу немного его изменить, чтобы, если ссылающаяся страница была Yahoo, она добавляла Y, если это Google, G, MSN M и т. Д.

Я пытался:

if (isset($result['q'])& strstr($_SERVER['HTTP_REFERER'],'google'))
   $_SESSION['kw'] = 'seo-G-'.str_replace('\\"',"X",$result['q']);

elseif (isset($result['q'])& !strstr($_SERVER['HTTP_REFERER'],'google'))
   $_SESSION['kw'] = 'seo-M-'.str_replace('\\"',"X",$result['q']);

  elseif (isset($result['p']))
   $_SESSION['kw'] = 'seo-Y-'.$result['p'];

    else {some other stuff}

Но я не могу сделать первый, ЕСЛИ правда. Если я захожу с ask.com, я получаю «seo-M appended», но я не могу, даже если захожу с Google, заставить его добавить. Я просто неправильно форматирую?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2010

Измените & на &&. Это обычный оператор для большинства языков программирования для логических «и»

В PHP у вас есть && или AND для логических операций bool.

& обычно используется для битовых операций, что здесь не так.

1 голос
/ 23 февраля 2010

Я думаю, что вы используете неправильный оператор AND, вы должны использовать &&, а не просто &. один амперсанд предназначен для побитовых операций.

Попытка:

if (isset($result['q']) && strstr($_SERVER['HTTP_REFERER'],'google'))
...