1

私のウェブサイトへの着信トラフィックが検索エンジンに応じて情報を追加するように、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}

しかし、最初の IF を真にすることはできません。ask.com から来た場合、「seo-M が追加されました」と表示されますが、Google から来た場合でも、追加することはできません。フォーマットが間違っているだけですか?

4

2 に答える 2

4

& を && に変更します。これは、ほとんどのプログラミング言語で論理「and」を表す通常の演算子です。

PHP では、論理ブール演算に && または AND があります。

& は通常​​、ビット操作に使用されますが、ここでは間違っています。

于 2010-02-22T21:45:22.503 に答える
1

間違った AND 演算子を使用していると思い&&ます&。単一のアンパサンドはビット演算用です。

試す:

if (isset($result['q']) && strstr($_SERVER['HTTP_REFERER'],'google'))
于 2010-02-22T21:47:58.347 に答える