![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam zamiar wziąć się za tworzenie zaawansowanego systemu reklamowego na swojej stronie. Chodzi o to, że użytkownik będzie mógł wykupić na stronie dowolną formę reklamy (albo XX wyświetleń albo XX dni wyświetlania jego bannera). Do tego chciałbym stworzyć panel, gdzie użytkownik będzie mógł sobie podglądać skuteczność jego reklamy, czyli po prostu panel z takimi danymi jak ilość kliknięć w reklamę oraz ilość wyświetleń w danym dniu. No i teraz pytanie - jak zliczać wyświetlenia tej reklamy? Co odświeżenie pakować:
? Nie wiem zbytnio jak to jest zrobione na innych stronach, jeśli wykupuje się powiedzmy 1000 wyświetleń za ileś tam zł. Chodz o wyświetlenia unikalne czy też nie? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że chodzi o wyświetlenia unikalne, bo w przeciwnym wypadku byłoby to zbyt łatwe do nabijania. Ja bym zrobił chyba zliczanie wyświetleń po IP, gdzie liczyłoby się tylko jedno wyświetlenie z danego IP na dzień, albo np. jedno na 12 godzin - kwestia do ustalenia.
Wtedy mógłbyś mieć osobną tabelę np. adverts_views: Kod id | advert_id | ip | time Rozwiązanie takie ma jeszcze taką zaletę, że w każdej chwili możesz zmienić zdanie na temat liczby godzin, co którą nowe wyświetlenie ma zostać uwzględnione. Ten post edytował SmokAnalog 28.11.2013, 12:43:25 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Kliknięcia w link proponujesz zliczać w podobny sposób czy tam nie patrzeć już na unikalność i wrzucać value+1 zawsze ?
EDIT: Nasunęło mi się jeszcze jedno pytanie. Będzie kilka reklam losowo wyświetlanych i zależnie od tego która reklama w danym momencie się wyświetli - jej licznik będzie aktualizowany. Tak więc sprawdzanie czy dane IP już było zliczone dla danej reklamy jest możliwe tylko po sprawdzeniu tego w bazie danych, co daje dwa zapytania:
potem:
tak więc i tak zawsze będę musiał chyba wykonywać to sprawdzanie w ten sposób. Zastanawiam się czy nie będzie lżej przetrzymywać w jakimś cache tablicy z numerami IP dla danych reklam i tak to porównywać ? Ten post edytował Michael2318 28.11.2013, 13:07:45 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Tak tylko jeśli będę chciał wstawić dla advert_id = 4, dwa różne IP to przepuści ? Bo przecież będzie nadany indeks na advert_id. Chyba będzie trzeba zrobić unikalny inteks tylko na pole z IP i oddzielna tabela dla wyświetleń, oddzielna dla kliknięć.
Ten post edytował Michael2318 28.11.2013, 13:47:05 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wybaczcie, że się wtrącam, ale proponował bym, zrobić zliczanie zarówno wszystkich jak i unikalnych kliknięć / wyświetleń.
Jeśli chodzi o sam mechanizm sprawdzania unikatowości oprócz IP, możesz użyć także sesji oraz cookies. Mógłbyś sprawdzać najpierw sesje, później cookies, a dopiero na końcu adres IP. Sesja jak i cookies na pewno będą szybsze niż sprawdzanie za każdym razem IP. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Tylko zapytanie kierowane do bazy przy każdorazowym odświeżeniu strony dodatkowo obciąży stronę, a nie wiem czy te informacje będę wykorzystywał w panelu. Zastanawiam się czy nie ograniczyć tego po prostu do liczb:
Poniedziałek, dd-mm-yy: 243 wejścia unikalne, Wtorek, dd-mm-yy: 212 wejść unikalnych. Lub po prostu samo: Wszystkich wejść unilalnych: 1342 Aczkolwiek to drugie jest trochę zbyt ubogie, myślę, że wersja pierwsza cieszyłaby się większym zainteresowaniem. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Informacje możesz zapisywać w pliku tymczasowym. Jeśli się uzbiera określona liczba to zapisujesz ją do bazy lub jeśli klient będzie sprawdzał statystyki. Zapis do plików będzie szybszy niż do bazy.
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
No więc finalnie, może w ten sposób.
Wyświetlam reklamę o ID = X, userowi, któremu się to wyświetliło tworzę sesję - $_SESSION['advert_X'] = time(); oraz ciastko z tymi samymi wartościami (sesja zniknie, jeśli user np. wyloguje się na stronie, ponieważ zachodzi session_destroy() ) Jednocześnie do tabeli advert_views dodaję nowy wpis. Teraz, chcąc sprawdzić czy dany delikwent już widział/klikał w reklamę:
bedzie ok? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Tak tylko jeśli będę chciał wstawić dla advert_id = 4, dwa różne IP to przepuści ? Bo przecież będzie nadany indeks na advert_id. Chyba będzie trzeba zrobić unikalny inteks tylko na pole z IP i oddzielna tabela dla wyświetleń, oddzielna dla kliknięć. Możesz nałożyć pojedynczy indeks na kilka pól naraz. To jest właśnie cały myk - wtedy analizowana jest dana kombinacja, czyli zabroniona będzie w Twoim przypadku każda powtórka PARY advert_id i ip. Nie polecam opierać tego mechanizmu na sesji / ciastkach. To są zbyt ulotne dane - wystarczy, że ktoś np. używa trybu Incognito w Google Chrome - wtedy za każde wyłączenie przeglądarki będzie kasowało jego ciastka, nie mówiąc o możliwości ich ręcznego usunięcia. Idealnej metody nie ma, bo IP to też nie jest w stu procentach sprawiedliwy sposób. Przecież kilka osób może korzystać niezależnie z tej samej sieci (np. kafejka), a Ty wtedy zliczysz ich wszystkich jako jedną osobę. Poza tym są przecież tzw. zmienne IP. Mimo wszystko to jest moim zdaniem najmniejsze zło. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie polecam opierać tego mechanizmu na sesji / ciastkach. To są zbyt ulotne dane - wystarczy, że ktoś np. używa trybu Incognito w Google Chrome - wtedy za każde wyłączenie przeglądarki będzie kasowało jego ciastka, nie mówiąc o możliwości ich ręcznego usunięcia. Racja, ale nadają się do szybkiego sprawdzenia pewnych informacji. W przypadku braku sesji lub usunięcia ciasteczka używany jest drugi mechanizm sprawdzający ![]() Oczywiście adres IP też nie jest idealnym rozwiązaniem, dlatego warto zebrać możliwie jak najwięcej informacji. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Zgadza się, IP samo w sobie też nie jest sprawiedliwe, ale jest to najlepszy punkt zaczepienia z możliwych.
IP zmienia się chyba co jakiś czas lub po restarcie routera (czyli co jakiś okres czasu), więc na te 12 czy tam 24h to nie będzie miało znów tak wielkiego znaczenia bo i tak wtedy wszystkie dane "znikną". Teraz jest kolejny problem bo jeśli ta tabela ma być czyszczona co 24h to muszę jakoś zapisywać te dane równocześnie to innej tabeli, żeby mieć jak tworzyć statystyki (mieć na czym bazować, tworząc je). Kolejna tabela, ze schematem: advert_id | unique_views i przed czyszczeniem tabeli, aktualizacja w ten sposób? Wada tego będzie taka, że statystyki z dnia obecnego poznam dopiero następnego dnia, czyli tak naprawde nigdy nie bede w stanie sprawdzić statystyk danej reklamy z danej chwili/dnia bo zapiszę je do tabeli dopiero na początku nastepnego dnia (po północy). Ah i kolejna wada - jeśli chcę, aby reklama była emitowana do 1000 wyświetleń i przykładowo dnia poprzedniego reklama miała 930 wyświetleń to może się okazać, że po aktualizacji dnia następnego będzie miała już 1211, czyli przekroczy limit czego bym nie chciał. Ten post edytował Michael2318 28.11.2013, 15:49:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 16:45 |