Come utilizzare strstr con $ _SERVER [ 'HTTP_REFERER']
Domanda
Sto usando PHP per fare in modo che il traffico in entrata al mio sito web aggiungerà le informazioni a seconda del motore di ricerca. Sto impostando $ _SESSION [ 'kw'], se non è già impostato, al tel me che si tratta di SEO e di aggiungere i termini di ricerca:
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 è ciò che Google, MSN e chiedere l'uso per le loro richieste, p è per Yahoo. Che copre la maggior parte del traffico in entrata. OK così ora voglio cambiare un po 'in modo che se la pagina di riferimento è yahoo, si aggiunge un Y, se si tratta di un google G, msn M ecc.
ho provato:
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}
Ma io non posso fare la prima se vero. Se io vengo da ask.com, ottengo "seo-M aggiunto", ma non posso, anche quando proveniente da Google, a farla da aggiungere. Sto solo la formattazione sbagliato?
Soluzione
Cambia il & a &&. Questo è il solito operatore per la maggior parte dei linguaggi di programmazione per una logica "e"
In PHP avete && o E per le operazioni logiche bool.
& viene solitamente utilizzato per bit-operazioni, che è sbagliato qui.
Altri suggerimenti
Credo che tu stia utilizzando l'operatore sbagliato e, si dovrebbe utilizzare non solo &&
&
. il singolo e commerciale è per operazioni bit per bit.
Prova:
if (isset($result['q']) && strstr($_SERVER['HTTP_REFERER'],'google'))