Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem zapisu referera do bazy
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował djgarsi 1.09.2010, 18:14:08


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
AlexDeLarge
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował AlexDeLarge 1.09.2010, 18:20:12


--------------------
Java and PHP developer 2007-2014 :)
Go to the top of the page
+Quote Post
djgarsi
post
Post #3





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


Ja jednak zostanę przy HTTP_REFERER.smile.gif tylko powiedz mi proszę co ten błąd oznacza?smile.gif


--------------------
Go to the top of the page
+Quote Post
AlexDeLarge
post
Post #4





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

Ostrzeżenie: (0%)
-----


Ale jesteś pewien, że $_SERVER['HTTP_REFERER'] jest niepuste?
Jeśli tak, to ukryj błędy:
  1. @parse_url(...)

To jeno ostrzeżenie.


--------------------
Java and PHP developer 2007-2014 :)
Go to the top of the page
+Quote Post
djgarsi
post
Post #5





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
AlexDeLarge
post
Post #6





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

Ostrzeżenie: (0%)
-----


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.


--------------------
Java and PHP developer 2007-2014 :)
Go to the top of the page
+Quote Post
djgarsi
post
Post #7





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


Chodzi o małpę w 4 linii??

$adresik=@parse_url($referer, PHP_URL_HOST);


--------------------
Go to the top of the page
+Quote Post
AlexDeLarge
post
Post #8





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

Ostrzeżenie: (0%)
-----


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.


--------------------
Java and PHP developer 2007-2014 :)
Go to the top of the page
+Quote Post
djgarsi
post
Post #9





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


Ok. Mam zainstalowany GA.smile.gif I uprzedzając kolejne pytanie, chcę mieć swoje dane w panelu admina.smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:29