Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] COOKIE i ocenianie, Gromadzenie danych
Abaddor
post 15.07.2009, 12:23:35
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


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

Ten post edytował Abaddor 15.07.2009, 12:25:04
Go to the top of the page
+Quote Post
Spawnm
post 15.07.2009, 12:27:45
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




a co jeśli ktoś wyczyści cookies przeglądarki ;]
Go to the top of the page
+Quote Post
Skie
post 15.07.2009, 12:33:11
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


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


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
Fifi209
post 15.07.2009, 12:46:24
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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


Ten post edytował fifi209 15.07.2009, 12:47:05


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post 15.07.2009, 12:46:42
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Abaddor
post 15.07.2009, 14:45:30
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


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....
Go to the top of the page
+Quote Post
blooregard
post 15.07.2009, 14:51:50
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Abaddor
post 15.07.2009, 15:13:34
Post #8





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


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
Go to the top of the page
+Quote Post
erix
post 15.07.2009, 15:58:06
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Poszukaj sobie na forum, bo nieraz był poruszany ten problem.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Abaddor
post 16.07.2009, 12:02:17
Post #10





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


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.
Go to the top of the page
+Quote Post
Fifi209
post 16.07.2009, 12:09:48
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Abaddor
post 16.07.2009, 13:08:22
Post #12





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

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


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
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: 24.07.2025 - 17:10