[ peca89bg @ 17.03.2012. 21:12 ] @
E ovako, iz baze vucem slike i broj lajkova i dislajkova za sliku.
Korisnik moze da lajkuje ili dislajkuje ali samo jednom.
Ako lajkuje onda su oba linka disabled (i like i dislike) i isto tako kada klikne na dislike.
Ono sto mene muci, tj. za sta nemam ideju jeste kako ga ograniciti da samo jednom moze da klikne na like ili dislike.

baza izgelda ovako:

slike:
id, title, url

i tabela likes
id_slike, svidja(int), nesvidja(int)

kada klikne na like ili dislike ja setujem +1 svidja ili ne svdija

kako da uradim, jos jedna tabela koja ce imati id user-a i id slike.
nije mi jasno kako proveriti da li je user lajkovao ili dislajkovao neku sliku.
najbolji primer za ovo je http://www.blic.rs/Vesti/Drust...orne-kampanje/komentari#ostali
plus/minus za svaki komentar.

[ PHPovac @ 17.03.2012. 21:18 ] @
napraviš tabelu
lajkovali
polja
id, slika_id, korisnik_id, datum
i kad klikne na dugme
upišeš osim like + 1 ili šta već
id lsike, id korisnika i datum (opciono)
i posle
mysql_query(select * from lajkovali where slika_id = $slika_id and korinsik_id = $korisnik_id);
if(mysql_num_rows(...)==0) {
prikazi lajkove
} else {
disejbluj
}
[ dakipro @ 17.03.2012. 21:21 ] @
moras negde da belezis pojedinacne korisnike (kombinacijom IP adrese i cookie-a) i ID slike sa kojom je imao interakciju
mislim. Primer kojis i naveo na blicu je najprostiji moguci, samo setujes korisniku cookie sa IDjem slike, sto mozes lako da vidis tako sto pratis cookie koje je sajt setovao u browseru, ili jednostavno obrises cookie i onda mozes opet da glasas kao da se nista nije desilo. Ako ti treba nesto malo bolje od blica onda prati cookie ali i IP dokle god je to pouzdano (nije ni ip nesto pouzdan, al cookie moze da se obrise, a sumnjam da ce neko da se cima da menja IP samo da bi glasao na sliku). Mada ako cenis da nece korisnici brisati ni cookie onda ne moras komplikovanije
[ plus_minus @ 17.03.2012. 21:28 ] @
Mislim da je najbolje proveriti na osnovu email adrese. Pretpostavljam da korisnicima tražiš email adresu.. Ip kao što napisa čovek, nije pouzdana stvar. Jel' x_forwarded_for ili je nešto treće.. to je gatanje u pasulj, maltene. Najpreciznija i najverodostojnija kombinacija provere dal' je to taj ili ne, jeste username i email adresa. Nekako vežeš tabelu likes sa emailom i korisničkim imenom i dodaš još jedno polje, recimo... username ali kroz strrev() ili str_shuffle() da bude treći unique zapis pored već jednog u.name i drugog email-a. Naći ćeš već načina kako to da izvedeš. I onda se ne oslanjaš na cookies ili sessions.. već na zapis u samoj bazi.. text fajlu.. whatever.
[ peca89bg @ 17.03.2012. 21:29 ] @
Citat:
PHPovac: napraviš tabelu
lajkovali
polja
id, slika_id, korisnik_id, datum
i kad klikne na dugme
upišeš osim like + 1 ili šta već
id lsike, id korisnika i datum (opciono)
i posle
mysql_query(select * from lajkovali where slika_id = $slika_id and korinsik_id = $korisnik_id);
if(mysql_num_rows(...)==0) {
prikazi lajkove
} else {
disejbluj
}

ma ok je to. ali vidi, imam 20 slika po strani, to je 20 upita po strani plus jedan gde vuce sve slike.
koliko je efikasno?

Citat:
dakipro: moras negde da belezis pojedinacne korisnike (kombinacijom IP adrese i cookie-a) i ID slike sa kojom je imao interakciju
mislim. Primer kojis i naveo na blicu je najprostiji moguci, samo setujes korisniku cookie sa IDjem slike, sto mozes lako da vidis tako sto pratis cookie koje je sajt setovao u browseru, ili jednostavno obrises cookie i onda mozes opet da glasas kao da se nista nije desilo. Ako ti treba nesto malo bolje od blica onda prati cookie ali i IP dokle god je to pouzdano (nije ni ip nesto pouzdan, al cookie moze da se obrise, a sumnjam da ce neko da se cima da menja IP samo da bi glasao na sliku). Mada ako cenis da nece korisnici brisati ni cookie onda ne moras komplikovanije


ok, ja smestam id slike i id usera-u u cookie.
cookie mi je array ili kako?
jel moze example?
[ Milos911 @ 17.03.2012. 22:09 ] @
Citat:
peca89bg:ma ok je to. ali vidi, imam 20 slika po strani, to je 20 upita po strani plus jedan gde vuce sve slike.
koliko je efikasno?

Ako imas registraciju i glasanje samo za registrovane clanove, ovo ti je najbolje resenje.
Ako neces da opterecujes bazu, prilikom prvog logovanja ubacis sve u sesiju, i radis update te sesije prilikom lajka/dislajka. A to da li moze da lajkuje ili ne, kontrolises iz sesije...

A za glasanje za neregistrovane korisnike, ja ne bih mnogo komplikovao i uradio bih proveru samo preko kukija. Ubacis samo id slike, ne treba ti id usera. Realno, nikako se ne mozes 100% zastiti bez registracije, tako da je neka komplikovanija provera bzvz trosenje resursa.
[ peca89bg @ 17.03.2012. 22:17 ] @
hvala na odgovorima..
recite mi za cookie.
kako da ga setujem
setcookie($id_slike, $id_slike);
ili da radim npr.ovako:
$likes = array();
i sad ako je lajkovano stavim
$likes[] = $id_slike;
setcookie("likes", $likes);

i posle da prolazim kroz ceo niz da pitam da li se id_slike nalazi u cookie?
ili jednostvano da pitam da li je setovan npr $_COOKIE[$id_slike] ? //ako radim ovako, to znaci da cu za recimo 40 slika koje je user lakovao ili dislajkovao da imam i 40 cookie-a? koliko je ovo dobro?
[ plus_minus @ 17.03.2012. 22:19 ] @
Citat:
Realno, nikako se ne mozes 100% zastiti bez registracije


Upravo tako. Baš kao što je i ovde na ES-u slučaj. Like i dislike se ne vide ako si gost.
Oćeš da lajkuješ? Login first.


@peca89bg

Za cookie ti treba još minimum jedan parametar. "Expires"
Mada i ne mora...

Što se ostalih parametara tiče, → http://php.net/manual/en/function.setcookie.php

Sve je objašnjeno kako treba.

Pročitaj i user contributed notes povodom toga.