Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Sprawdzenie czy upłyneły 24h
kalafior122
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Witam. Mam problem muszę zaliczać tylko co 24h klinięcie w link.. zaraz opisze na przykładzie (IMG:style_emoticons/default/haha.gif)
User xinski ma konto na stronie y i dostaje link do programu polecen np. y.pl/pp.ph?u=xinski i rozsyła ten link do znajomych i oni klikają oddjae mu punkty do tej pory wiem jak zrobić tylko nie wiem jak zrobić aby znajomi mogli kliknąć w ten link tylko raz na 24h (tz mogą klikać kilka razy ale zalicza tylko jeden raz na 24h). Myślę że dobrze opisłem o co mi chodzi... a 2 to jak zabezpieczyć to przed proxy i zmiennym ip

Ten post edytował kalafior122 7.03.2013, 16:27:28
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





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




Dodajesz pole datatime do db i porównujesz z obecną datą.
Ew. cookies, ale to bardzo łatwo obejść.
Go to the top of the page
+Quote Post
kalafior122
post
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Cytat(Spawnm @ 6.03.2013, 21:41:27 ) *
Dodajesz pole datatime do db i porównujesz z obecną datą.
Ew. cookies, ale to bardzo łatwo obejść.

też tak myślałem tylko gorzej to napisać.... :/ nie znam sie za bardzo na datach w mysql/php
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #4





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

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


proste dodajesz nowa baze np. daty
i dodajesz tam:

ip
host
data

i następnie gdy osowa kliknie to przy wykorzystaniu date() odczytujesz czy osoba klikła jak tak to nie dodajesz punktów
Go to the top of the page
+Quote Post
kalafior122
post
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


chwila ale jak to porównać(IMG:style_emoticons/default/questionmark.gif)

Ten post edytował kalafior122 6.03.2013, 22:38:45
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Było na forum milion razy, sam już chyba na 2 takie tematy odpisywałem. Użyj wyszukiwarki gwarantuję, że znajdziesz gotowe odpowiedzi.
Go to the top of the page
+Quote Post
kalafior122
post
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


tak w sumie wszystko wiem jak zrobić chodzi mi tylko o to jak sprawdić czy upłyneły 24h. Pobieramy czas z bazy (podczas dodania rekordu) i sprawdzamy z akualną(chyba daty też terzba porównać tylko nw jak).W teorii wiem jak to zrobić gorzej z praktyką...
a co do wyszukiwarki nie mogę nic znaleźć

Ten post edytował kalafior122 7.03.2013, 16:16:18
Go to the top of the page
+Quote Post
_Borys_
post
Post #8





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Funkcja MYSQL DATEDIFF() albo TIMEDIFF()
Jako drugi argument podajesz NOW() w przypadku TIMEDIFF()
MySQL: operacje na datach i czasie

Ten post edytował _Borys_ 7.03.2013, 17:30:31
Go to the top of the page
+Quote Post
kalafior122
post
Post #9





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


wymyśliłem coś wcześniej (IMG:style_emoticons/default/smile.gif) zapomniałem napisać teraz mam problem z tym jak zabezpieczyć ten system przed proxy i zmiennym IP

Ten post edytował kalafior122 7.03.2013, 17:26:51
Go to the top of the page
+Quote Post
_Borys_
post
Post #10





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Dodawaj do linku jakiś unikalny identyfikator, i każdy taki link może być kliknięty tylko raz, sprawdzasz w bazie czy ten link był kliknięty a jeśli tak to nie dodajesz już punktów.
Go to the top of the page
+Quote Post
kalafior122
post
Post #11





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


własnie to ma kliknąć jak najwięcej osób... bo jest to skrypcik na konkurs i kto zdobędzie najwięcej poleceń(kliknięć) ten wygrywa. I chodzi o to żeby ktoś sb poprostu proxy nie zmieniał albo jak ma znienne ip żeby sobie poprostu sam nie klikał

Ten post edytował kalafior122 7.03.2013, 17:44:47
Go to the top of the page
+Quote Post
kallosz
post
Post #12





Grupa: Zarejestrowani
Postów: 272
Pomógł: 19
Dołączył: 29.07.2006

Ostrzeżenie: (10%)
X----


Najprościej przy zmiennym IP stosować cookie.
Chyba nie ma złotej metody na zabezpieczenie przed proxy.
Dodatkowo możesz też sprawdzać user-agenta i sprawdzać czas klików na poszczególne ID czy ktoś nie robi tego zbyt często co mogło by sugerować obchodzenie przez proxy.

Ten post edytował kallosz 7.03.2013, 18:07:51
Go to the top of the page
+Quote Post
_Borys_
post
Post #13





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Dla każdego wejścia na stronę generujesz link z unikalnym identyfikatorem, ten link który mają klikać, identyfikator przechowujesz w bazie, każdy użytkownik ma więc inny link, jeśli kliknie dodajesz punkty i kasujesz identyfikator z bazy.
Można też na cookie to zrobić jeśli jest unikalne ale trzeba by sprawdzać tak samo w bazie czy już było kliknięte a potem kasować z bazy.

Ten post edytował _Borys_ 7.03.2013, 18:16:35
Go to the top of the page
+Quote Post
Damonsson
post
Post #14





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


evercookie + zapisywanie wszystkiego co identyfikuje użytkownika. No, ale to już jakiś człowiek musiałby przeanalizować logi.
Go to the top of the page
+Quote Post
kalafior122
post
Post #15





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Cytat(_Borys_ @ 7.03.2013, 18:14:09 ) *
Dla każdego wejścia na stronę generujesz link z unikalnym identyfikatorem, ten link który mają klikać, identyfikator przechowujesz w bazie, każdy użytkownik ma więc inny link, jeśli kliknie dodajesz punkty i kasujesz identyfikator z bazy.
Można też na cookie to zrobić jeśli jest unikalne ale trzeba by sprawdzać tak samo w bazie czy już było kliknięte a potem kasować cookie u użytkownika.

nie rozumiem dlaczego usuwam id z bazy? user zapisuje sie do konkursu dostaje link y.pl?pp.php?u=nazwa_useraLUBid i każdy z jego pomocników klika cąły czas ten sam link
Go to the top of the page
+Quote Post
_Borys_
post
Post #16





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Właśnie że to ma być ten sam link tylko dodany unikalny jednorazowy identyfikator, każdy kto się zaloguje będzie miał inny identyfikator i tylko raz będzie mógł kliknąć. Nie da się tego zrobić bez logowania bo można łatwo ominąć.
W poprzednim poście napisałem, że po każdym wejściu na stronę, cofam, tamto nie zadziała, użytkownik musi się zalogować.
Go to the top of the page
+Quote Post
Damonsson
post
Post #17





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Jak nie dasz do wygrania Mercedesa to nikt się nie zarejestruje, nie łudź się (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
kalafior122
post
Post #18





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Cytat(_Borys_ @ 7.03.2013, 18:30:14 ) *
Właśnie że to ma być ten sam link tylko dodany unikalny jednorazowy identyfikator, każdy kto się zaloguje będzie miał inny identyfikator i tylko raz będzie mógł kliknąć. Nie da się tego zrobić bez logowania bo można łatwo ominąć.
W poprzednim poście napisałem, że po każdym wejściu na stronę, cofam, tamto nie zadziała, użytkownik musi się zalogować.

a ja potrzebuje bez logowania z logowaniem bym nie miał tego problemu...
a adres mac da rade pobrać bez lan?

Ten post edytował kalafior122 7.03.2013, 18:49:07
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #19





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

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


zrób tak utwórz baze o nazwie np. test i do niej dodaj
user varchar(222)
ip varchar(222)
host varchar(222)
data datetime

i gdy osoba kliknie w dany link no to zrób coś takiego
  1. $link = $_GET[u];
  2. if(isset($link))
  3. {
  4. $user = mysql_query("SELECT * FROM users WHERE login='$link'");
  5. $user = mysql_num_rows($user);
  6. if($user == 0)
  7. {
  8. // nie ma takiego uzytkownika
  9. }
  10. else
  11. {
  12. $ip = $_SERVER["REMOTE_ADDR"];
  13. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  14. $pobierzztest = mysql_query("SELECT * FROM test WHERE ip='$ip' AND host='$host' AND user='$link'");
  15. $pobierzztest= mysql_num_rows($pobierzztest);
  16. if($pobierzztest == 0)
  17. {
  18. //możesz dodac punkt i dodaj do bazy ze zostal oddany
  19. }
  20. else
  21. {
  22. $pobierzztest = mysql_fetch_array(mysql_query("SELECT * FROM test WHERE ip='$ip' AND host='$host' AND user='$link'"));
  23. $terazczas = time();
  24. $ostatniadata = date("Y-t-j", $pobierzztest[data]);
  25. $teraz = date("Y-t-j", $terazczas);
  26. if($ostatniadata == $teraz)
  27. {
  28. //już oddal dzisiaj glos
  29. }
  30. else
  31. {
  32. //możesz dodac punkt i dodaj do bazy ze zostal oddany
  33. }
  34. }
  35. }
  36. }
Go to the top of the page
+Quote Post
kalafior122
post
Post #20





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


własnie takie coś zrobiłem tylko nie wiem jak zabezpieczyć przed zmiannym ip ew proxy
Go to the top of the page
+Quote Post
markonix
post
Post #21





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Tabela powinna się składać z 3 pól.
W założeniu będzie miała duże obciążenie więc trzeba ją dobrze zaprojektować.

username (najlepiej id) | ip (w postaci numerycznej) | data

username + ip klucz UNIKALNY.

Sprawdzasz czy minęły 24h od kliknięcia, możesz to zrobić za pomocą strtotime "-1 day" lub jeśli datę w unix trzymiesz to odejmujesz od niej 86400.
Jeśli powyższe jest tak (czyli rekordu nie ma, bądź rekord jest ale nie minęły 24h) to robisz:
http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html
czyli dodajesz rekord bądź jeśli już ten user i te ip jest to aktualizujesz datę - wszystko w jednym zapytaniu.

Przypominam o SQL Injection, zwłaszcza przy pobieraniu nicku z linku.

Co do proxy Google:
"php proxy prevent"

Jest kilka kulawych rozwiązań jak i rozwiązania biznesowe (bazy proxy i dostęp z API), które są często płatne.

Ten post edytował markonix 8.03.2013, 10:13:57
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 23:23