yeti
12.10.2003, 22:28:27
Mam mały kłopot. Piszę klasę do obsługi statystyk strony. Chciałbym, aby zapisywane były również słowa kluczowe, które zostały podane w wyszukiwarkach z których nastąpiło przejście do serwisu. Jednak za diabła nie mogę znaleźć metody na zapisanie słów kluczowych ze zmiennej $HTTP_REFERER.
Problem polega na tym, że chciałbym pobierać tylko dokładne słowa wpisane w polu input wyszukiwarki, ale nie wiem jak je automatycznie wydobywać
Wiem, że można to zrobić, bo np. Home.pl to rejestruje
Może ktoś już się kiedyś z tym uporał.
adwol
12.10.2003, 22:45:31
Cytat
Mam mały kłopot. Piszę klasę do obsługi statystyk strony. Chciałbym, aby zapisywane były również słowa kluczowe, które zostały podane w wyszukiwarkach z których nastąpiło przejście do serwisu. Jednak za diabła nie mogę znaleźć metody na zapisanie słów kluczowych ze zmiennej $HTTP_REFERER.
W
HTTP_REFERER jest teoretycznie URL poprzedniego dokumentu, więc to jak tam będą zapisane słowa kluczowe zależy od przeglądarki. Np. dla googla URL wygląda mniej więcej tak:
Kod
http://www.google.pl/search?q=forum+php+pl&ie=ISO-8859-2&hl=pl&btnG=Szukaj+z+Google&lr=
a rozparsować to można w taki sposób:
[php:1:5f8d678b61]<?php
preg_match('/[?&]q=(.*?)(&|$)/', urldecode($_SERVER['HTTP_REFERER']), $m);
$slowa = explode(' ', $m[1]);
print_r($slowa);
?>[/php:1:5f8d678b61]
yeti
12.10.2003, 23:01:08
Zgadza się, ale dla każdej innej wyszukiwarki będzie inny układ słów w URLu.
Zastanawiam się nad prawidłowością, która pozwoliłaby na wyszukanie słów kluczowych w ciągu z dowolnej wyszukiwarki.
KaMeLeOn
12.10.2003, 23:18:22
Cytat
Zgadza się, ale dla każdej innej wyszukiwarki będzie inny układ słów w URLu.
Zastanawiam się nad prawidłowością, która pozwoliłaby na wyszukanie słów kluczowych w ciągu z dowolnej wyszukiwarki.
Nie ma takiego sposobu, musisz niestety rozróżniać wyszukiwarki...
Myślę, że nie powinieneś mieć z tym problemów, bo układ raczej się nie zmienia.
KaMeLeOn napisał:
Cytat
Myślę, że nie powinieneś mieć z tym problemów, bo układ raczej się nie zmienia.
Układ nie zmienia się tylko w takim sensie, że słowa kluczowe niezależnie od wyszukiwarki będą zawarte po znaku '?'. Sam Onet pozwala na kilka metod wyszukiwania, przyjrzyj się uważnie http_refferer: inny układ pojawia się dla wyszukiwarki, inny dla katalogu, jeszcze inny dla wyszukiwania złożonego. Dla wszystkich układów trzeba ułożyć odpowiedni warunek i osobno dla każdej wyszukiwarki

.
Utrudnieniem moze być fakt, że niektóre wyszukiwarki podają wyniki zaczynając od tego samego ciągu znaków, np. dla googla i interii jest to q

. Tak więc trzeba najpierw różnicować wyszukiwarki.
Mam nadzieję, że to pomoże.
chfast
19.10.2003, 21:32:56
A może warto podpatrzeć jak to robią inne skrypty do statystyk.
chfast
19.10.2003, 21:55:35
Mam coś...
[php:1:dfbaa16fc1]<?php
//wprowadzasz HTTP_REFERER, dostajesz słowa kluczowe
function getKeywords($refer){
$sr[]=array("wp","szukaj","Wirtualna Polska");
$sr[]=array("poland","query","Poland.com");
$sr[]=array("ahoj","q","Ahoj.pl");
$sr[]=array("altavista","q","Altavista.com");
$sr[]=array("google","q","Google");
$sr[]=array("yoyo","wpis","Yoyo.pl");
$sr[]=array("onet","qt","Onet.pl");
$sr[]=array("hoga","qt","Hoga.pl");
$sr[]=array("arena","qt","Arena.pl");
$sr[]=array("emulti","wyr","Emulti.pl");
$sr[]=array("abacho","q","Abacho");
$sr[]=array("bestoftheweb","q","Best Of The Web");
$sr[]=array("bluewin","q","Bluewin");
$sr[]=array("fireball","q","Fireball");
$sr[]=array("kvasir","q","Kvasir");
$sr[]=array("msn","q","MSN");
$sr[]=array("search","q","Search");
$sr[]=array("infoseek","qt","InfoSeek");
$sr[]=array("acoon","begriff","Acoon");
$sr[]=array("alltheweb","query","All The Web");
$sr[]=array("evision","query","Evision");
$sr[]=array("aol","query","AOL");
$sr[]=array("freenet","query","FreeNet");
$sr[]=array("lycos","query","Lycos");
$sr[]=array("mamma","query","Mamma");
$sr[]=array("big-search","search","Big Search");
$sr[]=array("cypria","search","Cypria");
$sr[]=array("excite","search","Excite");
$sr[]=array("ask","ask","Ask");
$sr[]=array("netscape","search","Netscape");
$sr[]=array("metaspinner","qry","MetSpinner");
$sr[]=array("nbci","keyword","Nbci");
$sr[]=array("web","su","North Ernlight");
$sr[]=array("yahoo","p","Yahoo");
$sr[]=array("szukacz.icm","q","Szukacz-ICM");
$sr[]=array("yandex","text","Yandex.pl");
$sr[]=array("netsprint","qt","netsprint");
$sr[]=array("o2",szukaj,"O2.pl");
$search='';
// parsuj url'a
$url=parse_url($refer);
// twórz zmienne z zapytania url'a
parse_str($url['query']);
// liczba znanych wyszukiwarek
$ile=count($sr);
// zidentyfikuj wyszukiwarke
for($n=0; $n<$ile; $n++)
{
if(eregi($sr[$n][0],$refer) && isset($$sr[$n][1]))
{
$search=$sr[$n][2];
break;
}
}
// slowa kluczowe
if($search)
{
$srq=$$sr[$n][1];
$srq = strtolower($srq);
$sign = array("%22","%23","%24","%25","%26","%27","%2a","%2b","%2c","%5c");
while(list($keysign,$valuesign)=each($sign)) $srq = str_replace ($valuesign, "", $srq);
$quest=str_replace ("+", " ", $srq);
$quest=stripslashes($srq);
$srq=rawurldecode($srq);
$ret[1]=strtolower($srq);
$ret[0]=$search;
}
return $ret;
}
?>[/php:1:dfbaa16fc1]
Uwaga! Kod pochdzi ze skryptu Istats 4.2 i został zamieszczony bez zgody autora.
warrior
4.02.2004, 21:08:18
Sprawdził ktoś ten skrypt czy działa ? Trzeba w nim coś zmieniać czy wystaczy wstawić tak jak jest do HTTP_REFERER ?
Bakus
5.02.2004, 02:29:52
Uzyj:[php:1:bfa789fbff]<?php
print getKeywords($_SERVER['HTTP_REFERER']);
?>[/php:1:bfa789fbff]i sam zobacz...