2010-02-22 3 views
1

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

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} 

д является то, что Google, MSN и попросить использовать для своих запросов , 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} 

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

ответ

4

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

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

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

+0

Большое спасибо. Иногда меня путают такие вещи. –

1

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

Try:

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