Pergunta

Estou usando o PHP para fazê -lo para que o tráfego recebido no meu site anexe as informações, dependendo do mecanismo de pesquisa. Estou definindo $ _Session ['KW'], se ainda não estiver definido, para me dizer que é SEO e anexar os termos de pesquisa:

  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}

P é o que o Google, MSN e pede o uso de suas consultas, P é para o Yahoo. Isso abrange a maior parte do tráfego de entrada. Ok, então agora eu quero alterá -lo um pouco para que, se a página de referência for o Yahoo, ele anexa um y, se for o Google A G, MSN M etc.

Eu tentei:

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}

Mas não posso fazer o primeiro se for verdade. Se eu vier do Ask.com, fico "SEO-M anexado", mas não posso nem mesmo quando vier do Google, faça com que ele acabe. Estou apenas formatando errado?

Foi útil?

Solução

Altere o & para &&. Este é o operador usual da maioria das linguagens de programação para um lógico "e"

No PHP, você tem && ou e para operações lógicas de BOOL.

& geralmente é usado para operações de bits, o que está errado aqui.

Outras dicas

Eu acho que você está usando o errado e o operador, você deve usar && não apenas &. O único e um único e é para operações bit netwise.

Tentar:

if (isset($result['q']) && strstr($_SERVER['HTTP_REFERER'],'google'))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top