ricavare la chiave di ricerca

ciaoa tutti, pardendo dallo spunto del tutorial scritto dal Grande Gianni,

sto creandoun sistema di statistiche sugli accessi, mi manca solo un particolare, ricavare la chiava utilizzata nei motor di ricerca.

con

$_SERVER['HTTP_REFERER'];

ricavo la pagina di provenienza, poi da questa dovrei estapolare la parola chiave

esempio:

 Il refer: http://www.google.it/search?hl=it&q=miosito.it&meta=

siccome sia msn che google utilizzano "q" per la chiave (tiscali utilizza "key")

come faccio a dire recuperami ciò che è contenuto in q o in key dal refer?

grazie mille

inviato 10 anni fa
yusizu
X 0 X

allora ho risolto così:

$browser ="Google";
$refe = $_SERVER['HTTP_REFERER'];

if (eregi("$browser", $refe)){ 
  $indirizzo=parse_url($refe); 
  parse_str($indirizzo['query'], $parsato); 
  $chiave = $parsato["q"];    ///okkio che q cambia in base al valore che ogni motore assegna (p, key..ect)
  echo"$chiave";
}

solo che ho notato due cose strane:

1)

non posso assegnare alla stessa variabile un nome diverso..(ma credo sia normale)

es:

$browser = "Google";

$browser = "msn";

$browser = "n";

..ma diciamo che è facilmente aggirabile, (magari aggiungendo tanti "IF" quanti sono i motori)

2)il problema più grosso è che alcuni motori come libero e tiscali dopo aver effettuato la ricerca costringono l'utente ad aprire la pagina richiesta come _blank xcui non passa nulla al $_SERVER['HTTP_REFERER'];

eppure la richiesta al server deve farla comunque! xckè mi risulta vuoto?

pensate possa essere risolvibile?

grazie mille

risposto 10 anni fa
yusizu
modificato 10 anni fa
X 0 X

Per avere un array di tutti i nomi usati nella stringa di query del motore di ricerca, alla funzione parse_str devi passarghli il risultato di $_SERVER['QUERY_STRING']; come riportato dal manuale.

Oppure, sempre dal manuale utilizzare:

$a = explode('&', $QUERY_STRING);
$i = 0;
while ($i < count($a)) {
    $b = split('=', $a[$i]);
    echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),
         ' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";
    $i++;
}
risposto 10 anni fa
Marco Grazia
X 0 X

ok ti ringrazio per il codice, molto utile (anche se come anticipato avevo utilizzato tanti if quanti sono i motori più utilizzati)

...ma nn mi risolve il problema con libero, yahoo e tutti quelli che aprono le pagine in _blank

 garzie :bye:

risposto 10 anni fa
yusizu
X 0 X

Non risolverai mai quella cosa perchè _blank è come se l'utente apre il browser ex novo e inserisce manualmente il link, quindi nessun referrer.

risposto 10 anni fa
LonelyWolf
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili