Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] COOKIE i ocenianie
Forum PHP.pl > Forum > Przedszkole
Abaddor
Witam,

Robiąc dalej swoją stronkę chciałem zrobić system oceniania grafiki. Nie chcę aby każdy mógł oceniać jeden obrazek ile chce więc pomyślałem jak by wykorzystać Cookie. Wybrałem Cookie bo już ich używałem i wiem o nich więcej niż o Sesjach(choć to prawie to samo).
Wymyśliłem jak to zrobić ale nie wiem czy będzie to w "dobrym smaku".

Otóż kiedy ktoś wybierze ocenę i kliknie oceń przeniesie się na stronę ocenianie.php(wiem, wiem lamersko, ale AJAXA nie umiem i a nie lubię używać czegoś czego nie do końca nie rozumiem), tam doda do bazy ocenę. Następnie wyślę COOKIE z id tego obrazka w nazwie i przy następnej próbie oceniania tego samego obrazka będę sprawdzał czy ktoś nie ma już COOKIE z tym id. Ważność cookie 6h. Potem proste przekierowanie na stronę z której ocenialiśmy.
W sumie prosty system i działa. I tu właśnie mam pytania:

1) Przy takim systemie każdy kto będzie chciał oceniać będzie zasypywany przez dużą ilość COOKIE, czy to jest "złe"?

2) Czy istnieje możliwość aby w jednym Cookie zapisywać całą tablicę z wieloma ID? W C++ dało tak radę kiedy tworzyliśmy tablicę ze Wskaźnikami to innych tablic. W COOKIE nie mam zielonego pojęcia... wydaje mi się to niemożliwe.

3) Ocenianie o którym piszę widziałem na wielu stronach, ale nie wiem jaka jest konstrukcja takich systemów oceniania, mógłbym prosić o link do strony która opisuje taki system lub o sam skrócony algorytm?


Bardzo dziękuję wszystkim którzy mi odpowiedzą.
Spawnm
a co jeśli ktoś wyczyści cookies przeglądarki ;]
Skie
Jeżeli chodzi o ocenianie, do którego mogą dokonywać tylko zarejestrowani użytkownicy do zrób sobie tabelę w bazie danych z np. "votes" -> id | user_id | graphic_id

Na cookie tego nie powinieneś robić, gdyż tak jak napisał Spawnm użytkownik może je skasować.


Poza tym pytałeś się czy duża ilość COOKIE to źle - Z tego co pamiętam strona może wysłać maksymalnie 20 cookies'ów do przeglądarki usera (w przypadku większej ilości nowe Cookie zastępuje najstarsze). Ponadto 1 Cookie nie może być dłuższy niż 4 KB, bo inaczej przeglądarka go "przycina".
Fifi209
Cytat(Abaddor @ 15.07.2009, 12:23:35 ) *
Witam,

Robiąc dalej swoją stronkę chciałem zrobić system oceniania grafiki. Nie chcę aby każdy mógł oceniać jeden obrazek ile chce więc pomyślałem jak by wykorzystać Cookie. Wybrałem Cookie bo już ich używałem i wiem o nich więcej niż o Sesjach(choć to prawie to samo).
Wymyśliłem jak to zrobić ale nie wiem czy będzie to w "dobrym smaku".

Jeżeli sesje i cookie to prawie jest to samo, to ja radzę zacząć od kursu php.

Cytat(Abaddor @ 15.07.2009, 12:23:35 ) *
Otóż kiedy ktoś wybierze ocenę i kliknie oceń przeniesie się na stronę ocenianie.php(wiem, wiem lamersko, ale AJAXA nie umiem i a nie lubię używać czegoś czego nie do końca nie rozumiem), tam doda do bazy ocenę. Następnie wyślę COOKIE z id tego obrazka w nazwie i przy następnej próbie oceniania tego samego obrazka będę sprawdzał czy ktoś nie ma już COOKIE z tym id. Ważność cookie 6h. Potem proste przekierowanie na stronę z której ocenialiśmy.
W sumie prosty system i działa. I tu właśnie mam pytania:

To najwyższy czas się brać za naukę.

Cytat(Abaddor @ 15.07.2009, 12:23:35 ) *
1) Przy takim systemie każdy kto będzie chciał oceniać będzie zasypywany przez dużą ilość COOKIE, czy to jest "złe"?

Tak źle.

Cytat(Abaddor @ 15.07.2009, 12:23:35 ) *
2) Czy istnieje możliwość aby w jednym Cookie zapisywać całą tablicę z wieloma ID? W C++ dało tak radę kiedy tworzyliśmy tablicę ze Wskaźnikami to innych tablic. W COOKIE nie mam zielonego pojęcia... wydaje mi się to niemożliwe.


Cytat(Skie @ 15.07.2009, 12:33:11 ) *
Z tego co pamiętam strona może wysłać maksymalnie 20 cookies'ów do przeglądarki usera (w przypadku większej ilości nowe Cookie zastępuje najstarsze). Ponadto 1 Cookie nie może być dłuższy niż 4 KB, bo inaczej przeglądarka go "przycina".


Istnieje, więcej tu serialize()" title="Zobacz w manualu PHP" target="_manual i tu unserialize()" title="Zobacz w manualu PHP" target="_manual

Cytat(Abaddor @ 15.07.2009, 12:23:35 ) *
3) Ocenianie o którym piszę widziałem na wielu stronach, ale nie wiem jaka jest konstrukcja takich systemów oceniania, mógłbym prosić o link do strony która opisuje taki system lub o sam skrócony algorytm?
Bardzo dziękuję wszystkim którzy mi odpowiedzą.


Cytat(Skie @ 15.07.2009, 12:33:11 ) *
Jeżeli chodzi o ocenianie, do którego mogą dokonywać tylko zarejestrowani użytkownicy do zrób sobie tabelę w bazie danych z np. "votes" -> id | user_id | graphic_id
erix
Cytat
1) Przy takim systemie każdy kto będzie chciał oceniać będzie zasypywany przez dużą ilość COOKIE, czy to jest "złe"?

Jest złe. Cookie jest wysyłane przy każdym żądaniu HTTP, nawet przy otwieraniu obrazka.

W ciastkach trzymaj jak najmniej.
Abaddor
Doczytałem i jednak sesje to co innego(choć opierają się na Cookie lub Get). Mój błąd.
Dowiem się więcej o sesjach i na nich oprę też system logowania(bo mam na COOKIEs :| ).
Pójdzie łatwo bo wszystko napisane na Klasach.

Ostatnie pytanie:

Czy znacie jakiś system do oceniania dla niezarejestrowanych użytkowników? Bo choć mam prawie wszystko gotowe(logowanie, tabele w bazie danych, poziomy admina) to wolałbym aby na początku nie było kont użytkowników(tylko admina).
Albo wskazówki lub sugestie na czym oprzeć taki system oceniania dla każdego. O kod nie proszę bo ten sam napiszę.

Bo jak widać mój wymyślony system legł w gruzach:P Programowanie w C++ i PHP(oprócz składni języka) to widać całkiem inne szkoły....
blooregard
Cytat
(choć opierają się na Cookie lub Get)

Bzura. Sesje, a cookies i GET, które jest metodą przesyłania żądań pomiędzy serwerem HTTP a przeglądarką, nie mają ze sobą nic wspólnego.

Cytat
na nich oprę też system logowania(bo mam na COOKIEs :| ).

Świetnie. W sam raz na prosty włam.

Cytat
Programowanie w C++ i PHP(oprócz składni języka) to widać całkiem inne szkoły...

Tak samo jak jazda samochodem osobowym i bolidem F1. Niby to samo, a jednak...

Cytat
Czy znacie jakiś system do oceniania dla niezarejestrowanych użytkowników?

Wątpię, aby były jakieś gotowe, ale mogę sie mylić, bo nigdy nie szukałem. Napisanie czegoś takiego chyba jest szybsze niż znalezienie w sieci i zaadoptowanie do własnej aplikacji.
Abaddor
Cytat
Bzura. Sesje, a cookies i GET, które jest metodą przesyłania żądań pomiędzy serwerem HTTP a przeglądarką, nie mają ze sobą nic wspólnego.


Czyli mam lipną książkę:P W niej piszą że Sesje opierają się na Cookie, bo wysyłane jest każdemu Cookie z identyfikatorem sesji i od tego się zaczyna.
A jeśli użytkownik ma wyłączoną usługę cookie to serwer domyślnie używa metody get.

Eh, trzeba zainwestować w dobrą książkę:|

Dzięki za wszystko. Muszę zmienić system logowania. I poszukam jak zrobić z tym ocenianiem, bo mi nie chodzi o kod, tylko o sposób:P
erix
Poszukaj sobie na forum, bo nieraz był poruszany ten problem.
Abaddor
Klasę Usera z logowaniem przerobiłem już na Sesje.

A teraz naprawdę ostatnie pytanie:D

Popróbowałem sobie AJAXA, w sumie nie jest trudny, założenie rozumiem(choć większość funkcji Javy nie zrozumiałem). I w Ajaxie zrobię ocenianie.
Pytanie czy tak jak chciałem wysyłać userowi ID ocenionego w Cookie mogę zrealizować jako Sesję? Bo pliki sesji trzymane są na serwerze więc nie obciążam usera, a jedynie serwer. Pytam czy to dobre rozwiązanie bo jak zrobić wiem, ale w necie nie piszą nigdy czy takie rzeczy nie są "złe".
Bo w programowaniu niektórych rzeczy się po prostu nie robi, choć można...

Może niektórych drażnię swoimi pytaniami(za co przepraszam), ale zazwyczaj jest tak że można czytać i nauczyć, ale jednak czyjaś rada ujęta w słowa + argumenty jest bezcenna.
Fifi209
Nie bo sesja wygasa, musisz to zapisać w cookie (tak jak pisałeś) albo w bazie.

Co do zapisu w cookie pisałem o serialize" title="Zobacz w manualu PHP" target="_manual i unserialize" title="Zobacz w manualu PHP" target="_manual
Abaddor
Wiem wiem.
Ale moim zdaniem na początek wystarczy na sesji, chodzi o to żeby nikt nie klikał oceny 1000 razy.
A jeśli ktoś będzie musiał wyłączyć i włączyć przeglądarkę(lub usuwać cookie z id sesji), wejść na stronę i znowu zagłosować to nie będzie aż takich problemów. Mało kto będzie też używał botów w tym celu. Potem i tak wprowadzę system użytkowników, ale na początku nie może go być, bo nowa strona musi być otwarta dla wszystkich:D

Bardzo mi pomogliście, dziękuję wszystkim.

Jeśli będę miał podobne problemy(związane z inżynierią programowania) to będę was spamował na Wiadomościach:P
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.