如何在$ _SERVER ['HTTP_REFERER']中使用strstr

时间:2010-02-22 21:43:02

标签: php referer strstr

我正在使用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是谷歌,msn并要求用于他们的查询,p是为雅虎。这涵盖了大部分传入流量。好了所以现在我想稍微改变它,以便如果引用页面是雅虎,它会附加一个Y,如果它是google a 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附加”,但我甚至不能从谷歌来,让它附加。我只是格式化错了吗?

2 个答案:

答案 0 :(得分:4)

更改&到&&对于逻辑“和”

,这是大多数编程语言的常用运算符

在PHP中你有&&或AND用于逻辑bool操作。

&安培;通常用于位操作,这在这里是错误的。

答案 1 :(得分:1)

我认为您使用了错误的AND运算符,您应该使用&&而不仅仅是&。单个&符号用于按位运算。

尝试:

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