Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Praćenje istorije linkova

[es] :: PHP :: Praćenje istorije linkova

[ Pregleda: 2445 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Praćenje istorije linkova31.07.2011. u 22:37 - pre 155 meseci
Kao prvo nema vete sa istorijom!!!

Elem, treba mi php script (po mogućnosti bez MySql-a, jer sa takvim bi i sam izašao na kraj, čini mi se) koji prati kuda je korisnik sve 'kliktao' po sajtu ne bi li mu negde pokazao istoriju tog njegovog 'kliktanja' e a da bi isti mogao da se vrati korak nazad ili eventualno 2 koraka nazad i.t.d.

Ovo treba da radi do neke zadate granice 'n' koraka unazad.

Ako neko ima nešto slično u js, može, 'ladno (mada bi preferirao php).

Mislim da ste svi to videli na velikom broju sajtova.

Osim toga, pošto kapiram da to nije ništa drugo do push/pop, kako se uopšte pravi push/pop u php-u koji opstaje i kad se strana osveži?

Eto, toliko...

Poz.,
S.Živković
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 01:44 - pre 155 meseci
Pogledaj neki tutorial o PHP sesijama ili cookies-u, pa ces valjda skapirati sta treba da radis :)

Push pop iskreno ne znam sta ti je, ali iz tvog zadnjeg pitanja vidim da je to bas PHP sesija. U njoj mozes skladistiti neke podatke, koji se nece obrisati dok korisnik ne ugasi svoj web pretrazivac. Ako ti je potrebno nesto dugotrajnije, onda koristi cookies.

Ukoliko budes imao jos neka pitanja, slobodno reci, mada sve ovo nije toliko tesko skapirati :)
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 05:21 - pre 155 meseci
Citat:
Zlatni_bg: Pogledaj neki tutorial o PHP sesijama ili cookies-u, pa ces valjda skapirati sta treba da radis :)

Push pop iskreno ne znam sta ti je, ali iz tvog zadnjeg pitanja vidim da je to bas PHP sesija. U njoj mozes skladistiti neke podatke, koji se nece obrisati dok korisnik ne ugasi svoj web pretrazivac. Ako ti je potrebno nesto dugotrajnije, onda koristi cookies.

Ukoliko budes imao jos neka pitanja, slobodno reci, mada sve ovo nije toliko tesko skapirati :)

Thanx na brzom odgovoru, ranoranilac ;)

Tako sam i mislio. Uzgred kad sam pomenuo push/pop to bi trebalo da znaju asm programeri. To je sistem stack-a. Gurneš podatak na stack (push) ili ga povučeš sa stack-a (pop). Kao stog sena. Novo seno stavljaš na vrh a staro uzimaš od dole.

Anyway, već sam nešto raduckao sa session-a, prbaću pa ću da vidim. Mislio sa mmožda neko već ima takvo šta jer je dosta često na netu.

S.Živković
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 08:10 - pre 155 meseci
Posle 1/2 sata trayal & error programiranja (kao da postoji drugačije) pored svega navedenog na početku teme ima tu još jedna vrlo bitna stvar a to je da kod mora biti user aware, t.j. da ovu istoriju 'pamti' za svakog user-a ponaosob pa se tu uvodi i IP adresa kao parametar što nas ako ne iz neminovnih onda iz praktičnih razloga ipak dovodi do korišćenja MySql-a (vidi ti MySql-a).

Evo draft rešenja koje sam napravio i koje (za moje potrebe) radi ono što sam hteo:

Tabela:
Code:

CREATE TABLE IF NOT EXISTS `link_history` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(100) NOT NULL,
  `link` varchar(300) NOT NULL,
  `res` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=292 ;

Može se tu naravno uvesti još poneko polje kao npr vreme pa da bude ograničeno za taj dan ili da se ostavi ovako pa kad se user vrati ima i dalje istoriju kakava je bila kad je zadnji put bio na sajtu. polje 'id' je možda suvišno ali je tu zbog eventualnog sortiranja...

Evo i koda koji tu istoriju pamti/prikazuje/menja, ...
Code:

$usr=$_SERVER['REMOTE_ADDR'];

if(isset($_REQUEST['clrhist'])) // brisanje istorije
{
    mysql_query("delete from link_history where ip='$usr'");
    header("location: ".$_SERVER['PHP_SELF']);
    exit;
}

$ns=isset($_REQUEST['ns']); // da li link dolazi sa istorije ???
$res=mysql_query("select distinct link from link_history where ip='$usr'");
$cnt=mysql_num_rows($res);

if(!$ns) // jesmo tu preko istorije (da=nemoj ponovo da pamtiš, glupo je iako imamo distinc u query-ju...)
{
    if($cnt<15) // maxmum istorije?
        mysql_query("insert into link_history set ip='$usr', link='$pageId'"); // nije, ubaci
    else
    {
        mysql_query("delete from link_history where ip='$usr'"); // jeste, obriši sve
        mysql_query("insert into link_history set ip='$usr', link='$pageId'"); // i dodaj poslednji
    }
}

// sad to lepo ispiši kao linkove
$res=mysql_query("select distinct link from link_history where ip='$usr'");
echo 'Browse history: ';
while($row=mysql_fetch_array($res))
{
    echo '<a href="'.$_SERVER['PHP_SELF'].'?pageId='.$row['link'].'&amp;ns">';
    echo $row['link'];
    echo '</a>';
    echo ' &rsaquo; ';
}

echo ' <a href="'.$_SERVER['PHP_SELF'].'?clrhist">CLR</a>'; // link za brisanje


MySql genijalci & čistunci će verovatno pronaći poneki optimizacioni propustak, ali generalno kod radi kako treba.

Predlozi ???

S.Živković
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 10:38 - pre 155 meseci
Apsloutno ne moraš da koristiš MySQL ukoliko nemaš potrebu da sačuvaš podatke nakon isteka ili invalidacije sesije. Dovoljno je da u session dodaš neki niz u kome čuvaš linkove i to ti je to.
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 10:55 - pre 155 meseci
Citat:
bantu: Apsloutno ne moraš da koristiš MySQL ukoliko nemaš potrebu da sačuvaš podatke nakon isteka ili invalidacije sesije. Dovoljno je da u session dodaš neki niz u kome čuvaš linkove i to ti je to.


Siguran sam da si 100% u pravu (i bez koda) no ponekad ti i ovakva greška donese ponešto dobro! Naime to pamćenje linkova za 'nakon isteka' se pokazalo baš kao gotivna stvar.

Hvala svejedno ;)

Za ostale koji možda misle da im baš ovo treba: poradio sam još malo na kodu (jer drugog koda nema)
Code:

<?php /* silence is golden */ ?>
:)

ako nekom treba novija verzija nek se javi !!!

Haugh!

S.Živković
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 10:58 - pre 155 meseci
@Zlatni_bg

Zaboravih: pa zar ne može sesija da se zapamti na duže kao cookie? Na primer na 10 godina (šalim se, recimo 30 dana)

S.Živković
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 11:50 - pre 155 meseci
Sesija ne, samo cookie. Sesija je mehanizam na serveru i podešavanja servera definišu dužinu trajanja sessije, s time da se session tracking može raditi korištenjem cookia ili request parametara. Mislim da možda i postoji neki način da se to sve nabudži da taj sesion cookie na strani klijenta ostane živ nakon gašenja browsera ali mislim da to nije baš pametno jer je bit sesije nešto drugo. Ono što treba da trajno pamtiš to svakako čuvaj u bazi i veži za konkretnog user-a ili šta već.

A kod mislim da zaista nije teško napisati:
- startas sesiu
- provjeris da li postoji tvoj niz na sesiji
- ako ne kreiras novi niz i stavis ga na sesiju
- iščitaš linkove iz niza i prikažeš ih
- staviš trenutnu stranicu u niz na sesiju

http://php.net/manual/en/function.session-start.php

[Ovu poruku je menjao bantu dana 01.08.2011. u 13:03 GMT+1]
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova01.08.2011. u 15:57 - pre 155 meseci
@bantu:

Tvoj odgovor, kao i link koji si postavio su svakako vrlo korisni. Oni, pored teme, govore i dosta o sesijama uopšte, pa će svako ko ovo čita sigurno pronaći štošta korisno.

Hvala na komentarima, kao što vidiš ja uvek dodeljujem + svima koji smisleno pristupaju temi na forumu mada sam na istom prilično nov.

Pozdrav!
S.Živković
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Praćenje istorije linkova02.08.2011. u 01:06 - pre 155 meseci
Pretekli ste me svi u odgovorima :)
Koji crni ranoranilac, ja tad idem na spavanje :D

Elem, da nastavimo pricu :) Nacin cuvanja je najbitnija razlika izmedju sesija i cookies-a. Sesije se obrisu svaki put kad se ugasi browser, dok se cookie cuva na korisnikovom kompjuteru i brise ili kada ga on obrise ili kada istekne cookie (ukoliko si podesio vreme isticanja). Dakle, ukoliko istorija treba da se cuva i kada korisnik vec ode sa sajta, ugasi kompjuter, i dodje opet sutra, pa treba opet da vidi celu istoriju, koristi cookies.

Onda, ja mislim da ti je taj rad sa IP adresama ovde suvisan, ako radis sa IP adresama i tako koristis autentikaciju, onda sesije i cookies nisu bas pravo resenje. Takodje, uz malo mozganja mozes zaobici i MySQL. Vidim da se dosta trudis oko ovoga problema, pa ako zapnes negde, slobodno reci, nije problem da napisem neki kod kako ja mislim da bi to najbolje funkcionisalo :) Ali eto bantu ti je dao savrsen sablon po kom bi trebalo da radis, samo prati to uputstvo, kodiraj, i napravices to sto ti treba :)

A ovaj push&pop, sada kada si mi objasnio, vidim da moze savrseno da se realizuje sa sesijama/cookiesom :)
I jedan dodatak samo, kad radis sa sesijama, prva stvar koja ti se salje u headeru MORA biti session_start(); i nikako ne smes tek posle da pozoves tu funkciju jer nece raditi! Setio sam se ovoga jer sam ja imao dosta problema sa tim kad sam prvi put koristio sesije (citaj: pola sata sam gledao i sizeo jer nije radilo a sve je bilo ok).

[Ovu poruku je menjao Zlatni_bg dana 02.08.2011. u 02:19 GMT+1]
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova02.08.2011. u 06:33 - pre 154 meseci
Hvala svima na učešu u ovoj temi.

@Zlatni_bg:

Ja imam već napravljenu klasu za stack (stog) ali ću morati da je doradim da koristi ili cookies ili session.

Pozdrav.
S.Živković
 
Odgovor na temu

Zmaj
Predrag Krstić
web developer
Zrenjanin

Član broj: 1035
Poruke: 382

Sajt: https://pkrstic.wordpress..


+4 Profil

icon Re: Praćenje istorije linkova02.08.2011. u 16:24 - pre 154 meseci
Stek nije stavi gore uzmes dole, to je red, a stek je stavi gore, uzmes gore. Push i pop ne postoje samo u asm ima ih u svakom jeziku.
 
Odgovor na temu

sasho.new
Saša Živković
Beograd

Član broj: 287842
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Praćenje istorije linkova02.08.2011. u 17:46 - pre 154 meseci

Princip je sličan, nisam hteo da detaljišem...

Hvala na pojašnjenju. (Kakav nick takav i post!)

Poz.
S.Živković
 
Odgovor na temu

[es] :: PHP :: Praćenje istorije linkova

[ Pregleda: 2445 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.