Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ostatnia przeglądana strona
RosheD
post 22.09.2013, 16:16:21
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Witam bardzo serdecznie.
Potrzebował bym kodu który będzie zapamiętywał jaki dany użytkownik był ostatnio na stronie. Np w panelu po zalogowaniu było by "ostatnio byłeś na 18.php".
Nie wiem jak jaśniej wyjaśnić. Z góry dziekuje za pomoc smile.gif
Go to the top of the page
+Quote Post
_Borys_
post 22.09.2013, 16:27:02
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


$_SERVER['REQUEST_URI'];
Tu między innymi masz plik uruchomiony przez użytkownika, wyciągasz nazwę i zapisujesz przy każdym ruchu użytkownika.
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 16:31:54
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Mógł byś podać na przykładzie pełnego kodu?
Go to the top of the page
+Quote Post
_Borys_
post 22.09.2013, 16:40:54
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Po prostu dodajesz do bazy dodatkową kolumnę i w niej robisz UPDATE za każdym razem gdy użytkownik porusza się po stronie.
Robisz UPDATE obok użytkownika który jest zalogowany, a który to, to już wiesz z sesji albo ciasteczek.
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 16:47:32
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Kiedyś zrobiłem coś podobnego tak:
  1. // logowanie odwiedzających
  2. function loguj_ip() {
  3. $ip = $_SERVER["REMOTE_ADDR"];
  4. $przegladarka = $_SERVER["HTTP_USER_AGENT"];
  5. $znacznik = sprintf("%u", crc32($ip.$przegladarka));
  6. $referer = $_SERVER["HTTP_REFERER"];
  7. $adres = $_SERVER["REQUEST_URI"];
  8.  
  9. $wynik = mysql_query("SELECT * FROM ip_dane WHERE znacznik=$znacznik");
  10. if (mysql_num_rows($wynik)==0) {
  11. mysql_query("INSERT INTO ip_dane (znacznik, ip, przegladarka, referer) VALUES ($znacznik, '$ip', '$przegladarka', '$referer')");
  12. }
  13. mysql_query("INSERT INTO ip_strony (znacznik, data, adres) VALUES ($znacznik, NOW(), '$adres')");
  14.  
  15. $wynik = mysql_query("SELECT znacznik, max(data) as data1, DATE_SUB(NOW(),INTERVAL 1 YEAR) as data2 FROM ip_strony GROUP BY (znacznik);");
  16. $wierszy = mysql_num_rows($wynik);
  17. for ($i=0;$i<$wierszy;$i++) {
  18. $wiersz = mysql_fetch_array($wynik);
  19. if ($wiersz["data1"]<$wiersz["data2"]) {
  20. mysql_query("DELETE FROM ip_strony WHERE znacznik={$wiersz["znacznik"]}");
  21. mysql_query("DELETE FROM ip_dane WHERE znacznik={$wiersz["znacznik"]}");
  22. }
  23. }
  24. }

Funkcję loguj_ip(); musisz dodać wszędzie, gdzie chcesz logować akcje usera. Z bazą chyba sobie poradzisz?


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 17:10:22
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Z tego co rozumiem to z tego kodu muszę dodać do sql rubryki : Ip,przegladarka,znacznik,referer,adres tak?
Jeśli się myle to przepraszam naprawe nie rozumiem jeszcze sql jak i javascritpów(ale rozumiem jak wstawiać ale nie jak je pisać)
Dodałem to do php i odczytałem za pomocą include. Teraz jak dodać do bazy danych i gdzie tu jest nazwa odpowiedzialna za dane rubryki jak i całą grupę?
Leci pomógł!
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 17:27:44
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Wybierz te, które potrzebujesz...


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 17:29:59
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


No wiem przecież. Ale tu chodzi o to czy ja bym dobre dane do sql dodał. Bo nie zbyt się na tym znam.
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 17:43:31
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Jak widzisz, masz dwa inserty do bazy danych:
1:
  1. INSERT INTO ip_dane (znacznik, ip, przegladarka, referer)

2:
  1. INSERT INTO ip_strony (znacznik, DATA, adres)

Potrzebne są więc dwie tabele, ale możesz to dostosować do swoich potrzeb. Żeby wyświetlić dane, możesz zrobić np. tak:
  1. if ($znacznik == '') {
  2.  
  3. $wynik = mysql_query("SELECT *, count(ip_strony.adres) as ilestron FROM ip_dane, ip_strony WHERE ip_dane.znacznik=ip_strony.znacznik GROUP BY (ip_dane.znacznik) ORDER BY ilestron DESC;");
  4. $wierszy = mysql_num_rows($wynik);
  5. echo '<table><caption>Ruchy Odwiedzających</caption>
  6. <tr>
  7. <td width="40px"> IP </td>
  8. <td width="20px"> Stron </td>
  9. <td width="200px"> Przeglądarka, system </td>
  10. <td width="200px"> Odwiedzane strony </td>
  11. </tr>';
  12. for ($i=0;$i<$wierszy;$i++) {
  13. $wiersz = mysql_fetch_array($wynik);
  14. echo '<tr>
  15. <td> <a href="index.php?go=szpieg&znacznik='.$wiersz['znacznik'].'">'.$wiersz['ip'].'</a> </td>
  16. <td> '.$wiersz['ilestron'].' </td>
  17. <td> '.$wiersz['przegladarka'].' </td>
  18. <td> <a href='.$wiersz['referer'].'>'.$wiersz['referer'].'</a> </td>
  19. </tr>';
  20. }
  21. echo '</table>';
  22.  
  23. } else {
  24.  
  25. $wynik = mysql_query("SELECT * FROM ip_strony, ip_dane WHERE ip_dane.znacznik=ip_strony.znacznik AND ip_strony.znacznik=$znacznik ORDER BY ip_strony.data;");
  26. $wierszy = mysql_num_rows($wynik);
  27.  
  28. echo '<table><caption> Informacja o Odwiedzającym </caption>
  29. <tr>
  30. <td width="100px"> Data </td>
  31. <td width="400px"> Adres </td>
  32. </tr>';
  33. for ($i=0;$i<$wierszy;$i++) {
  34. $wiersz = mysql_fetch_array($wynik);
  35. echo '<tr >
  36. <td> '.$wiersz['data'].' </td>
  37. <td> '.$wiersz['adres'].' </td>
  38. </tr>';
  39. }
  40. echo '</table>';
  41.  
  42. echo 'IP: '.$wiersz['ip'].' <br />
  43. Domena: '.@gethostbyaddr($wiersz['ip']).' <br />
  44. Przeglądarka, system: '.$wiersz['przegladarka'].' <br />
  45. Skąd: '.$wiersz['referer'].' <br />';
  46. }

Mam nadzieję, że nic nie pokićkałem smile.gif


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 18:14:22
Post #10





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Czyli tak powinna wyglądać baza danych z tego co rozumiem.
  1. CREATE TABLE IF NOT EXISTS users (
  2. znacznik varchar(32) NOT NULL,
  3. przegladarka varchar(32) NOT NULL,
  4. adres varchar(255) NOT NULL,
  5. PRIMARY KEY (id)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;



wklepałem wszystko jak jest. Z kodu który podałeś zrozumiałem tyle że <td> zapisuje dane. Zgadza się?
Baza danych jest połoczona oraz został dodana struktura a dane nei zostały tam zmienione. Mógł byś jeszcze jaśniej?
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 18:24:58
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(RosheD @ 22.09.2013, 19:14:22 ) *
Z kodu który podałeś zrozumiałem tyle że <td> zapisuje dane. Zgadza się?

Nie, to znacznik komórki tabeli.
Cytat(RosheD @ 22.09.2013, 19:14:22 ) *
Baza danych jest połoczona oraz został dodana struktura a dane nei zostały tam zmienione. Mógł byś jeszcze jaśniej?

Nie wiem, co zrobiłeś a czego nie...


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 18:56:57
Post #12





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


no więc dodałem 2 grupy do sql który nazywają się ip_dane oraz ip_strony do tej pierwszej dodałem tabele: znacznik, ip, przegladarka, referer. Zaś do 2'giej : znacznik, DATA, adres
skopiowałem cały kod który napisałeś wkleiłem go do php dodałem inny php który łączy się z bazą danych i podlinkowąłem za pomocą include to do głównej strony. I jak mówiłem wcześniej nie dodają się dane do sql.
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 19:28:19
Post #13





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A zadeklarowałeś wywołanie funkcji?


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 19:55:32
Post #14





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Noo jak widzisz nie zrobiłem bo nie mam pojęcia jak to zrobić mógł bys wyjasnić ?
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 20:08:04
Post #15





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przeczytaj jeszcze raz post, za który dałeś "pomógł". Tam napisałem, co trzeba zrobić. Naucz się pracować samodzielnie, praktyka jest niezastąpiona.


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 20:28:26
Post #16





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Cały czas staram się to zrobić samemu.
Ciągle wyskakuje ten błąd "
Fatal error: Cannot redeclare loguj_ip() (previously declared in /home/u557143795/public_html/index.php:30) in /home/u557143795/public_html/strona.php on line 26 "
w stronie głównej mam podany taki kod:
  1. <?php
  2. include('strona.php');
  3. ?>

a w tym "strona.php" mam podany kod który ty mi podałeś + łącze.
Go to the top of the page
+Quote Post
Kshyhoo
post 22.09.2013, 20:48:18
Post #17





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A loguj_ip(); gdzie masz?


--------------------
Go to the top of the page
+Quote Post
RosheD
post 22.09.2013, 22:11:12
Post #18





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Na dole wspomnianego wcześniej "strona,php"
  1. }
  2. }
  3. }loguj_ip();
  4. ?>

Myśle że może tak to wyglądać.
Go to the top of the page
+Quote Post
Kshyhoo
post 23.09.2013, 04:51:41
Post #19





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie czytasz tego, co piszę. loguj_ip(); musisz dołączyć wszędzie (na każdej stronie), która ma być kontrolowana. Cannot redeclare loguj_ip() oznacza, że funkcja już wcześniej została zadeklarowana i parser wyrzucił błąd.


--------------------
Go to the top of the page
+Quote Post
RosheD
post 24.09.2013, 17:08:01
Post #20





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 10.06.2013

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


Czyli po prostu ten plik "strona.php" może sobie leżeć obok strony głównej a samo loguj_ip(); będzie wszystko wczytywało?

kod który podałeś wyświetla dane wszystkich a nie dane osoby na którą jest się aktualnie zalogowany. Mógł byś ten kod przerobić lub wytłumaczyć co i jak?

Refresh. Potrzebuje kody który będzie zapisywał dane tylko dla każdego użytkownika z osobna. Oraz w razie potrzeby krótki tut jak co się z czym je.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:15