Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem zapisu referera do bazy
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam. Mam problem z zapisem referera do bazy danych. Problem polega na tym że do bazy nie zapisują się dane. Mój skrypt wygląda tak:
  1. <?
  2. $referer = "http://".$_SERVER['HTTP_REFERER'];
  3. $adresik=parse_url($referer, PHP_URL_HOST);
  4. $Query_ref='SELECT * FROM referer';
  5. $result_ref = mysql_query($Query_ref) or die(mysql_error());
  6. while ($row_ref = mysql_fetch_array($result_ref))
  7. {
  8. if($adresik==$row_ref[adres]) {
  9. $pytanko_ref='UPDATE referer SET odwiedzin=odwiedzin+1 WHERE adres="'.$adresik.'"';
  10. mysql_query($pytanko_ref);
  11. }
  12. else {
  13. $Zapytanie_ref = 'INSERT INTO referer VALUES ("'.$adresik.'", "1")';
  14. mysql_query($Zapytanie_ref);
  15. }
  16. }
  17. ?>


Wyświetlany błąd to Warning: parse_url(http://) [function.parse-url]: Unable to parse URL in /home/user/domains/strona.pl/public_html/ref.php on line 3
AlexDeLarge
Otóż i właśnie. Na HTTP_REFERER nie należy absolutnie polegać, gdyż nie każdy użytkownik go przesyła. Nie przez własną złośliwość, ale na ten przykład łączy się przez proxy, które go wycina.
Jeśli chcesz liczyć odwiedziny jednego użytkownika zainteresuj się sesjami.

Poza tym, panie.

  1. SELECT * FROM referer WHERE adres='$adresik'


Zdrówka życzę.
djgarsi
Ja jednak zostanę przy HTTP_REFERER.smile.gif tylko powiedz mi proszę co ten błąd oznacza?smile.gif
AlexDeLarge
Ale jesteś pewien, że $_SERVER['HTTP_REFERER'] jest niepuste?
Jeśli tak, to ukryj błędy:
  1. @parse_url(...)

To jeno ostrzeżenie.
djgarsi
A będzie zapisywał taki kod?
  1. <?
  2. if($_SERVER['HTTP_REFERER']<>0) {
  3. $referer = "http://".$_SERVER['HTTP_REFERER'];
  4. $adresik=parse_url($referer, PHP_URL_HOST);
  5. $Query_ref='SELECT * FROM referer';
  6. $result_ref = mysql_query($Query_ref) or die(mysql_error());
  7. while ($row_ref = mysql_fetch_array($result_ref))
  8. {
  9. if($adresik==$row_ref[adres]) {
  10. $pytanko_ref='UPDATE referer SET odwiedzin=odwiedzin+1 WHERE adres="'.$adresik.'"';
  11. mysql_query($pytanko_ref);
  12. }
  13. else {
  14. $Zapytanie_ref = 'INSERT INTO referer VALUES ("'.$adresik.'", "1")';
  15. mysql_query($Zapytanie_ref);
  16. }
  17. }
  18. }
  19. ?>
AlexDeLarge
poprawniej byłoby
  1. if (!empty($_SERVER['HTTP_REFERER']))


No i daj i tak tę małpę przed parse_url, bo widzę, że problem się powtarza tu i ówdzie.
djgarsi
Chodzi o małpę w 4 linii??

$adresik=@parse_url($referer, PHP_URL_HOST);
AlexDeLarge
Dokładnie.
I zróbżesz do cholery ten where w SQL-u - po co masz za każdym razem mielić całą tabelę.
Albo zainstaluj sobie Google Analytics.
djgarsi
Ok. Mam zainstalowany GA.smile.gif I uprzedzając kolejne pytanie, chcę mieć swoje dane w panelu admina.smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.