Skocz do zawartości

[JS] Zabezpieczenie odliczania


Dawka83

Rekomendowane odpowiedzi

Witam. Mam taki problem z zabezpieczeniami... A więc mam sobie kod który odlicza (taki zegar) i chciałbym zabezpieczyć tak żeby nie dało się go shackowac takim prostym programem jak Cheat Engine. A oto mój kod:

<?php
$timestamp = time();
$h=date("i",$timestamp);
$m=date("s",$timestamp);
$d=date("d",$timestamp);
$dm=date("t",$timestamp);
$mm=date("m",$timestamp);
while ($h>24)
{
$h=$h-24;
$d+=1;
if ($d>$dm)
{
    $d=0;
    $m+=1;
}
}

if ($m=00)
{
$m=0;
}
else
{
$m+=0;
}
$date=$h.':'.$m;

echo '
<script>
var h='.$h.'
var m='.$m.'
function azeg() {
m=m+1;
if (h>24)
{
    
    h=0;
}
if (m>60)
{
    h=h+1;
    m=0;
    refr();
    refr_s();
}
if (h<10){hs="0"+h}else{hs=h}
if (m<10){ms="0"+m}else{ms=m}
document.getElementById("zegar").innerHTML=hs+":"+ms;
setTimeout("azeg()",1000);        
}
</script>
<div id="zegar"></div>';
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Użytkownik ma zawsze może manipulować skryptem wykonywanym przez przeglądarkę, tak więc skrypt JS powinien być tylko i wyłącznie elementem wyświetlającym efekty pracy całej reszty ( PHP, SQL etc. ). Czyli: JS w Twoim wypadku powinien wyświetlać stan zegara, ale modyfikacja jego pracy nie powinna wpływać w żaden sposób na pracę reszty.

Odnośnik do komentarza
Udostępnij na innych stronach

Ale to zmienia się na serwerze, na przeglądarce może się zmienić np. tło strony, to tylko efekt graficzny i nie jest on istotny dla działania strony, po jej odświeżeniu wszystko wróci do normy i tak i tak.

Odnośnik do komentarza
Udostępnij na innych stronach

Więc może trochę beznadziejnie masz to zaprojektowanie, tak będą szczerym. Podchodzisz do problemu bardzo ogólnie i w łopatologiczny sposób, chcesz co sekundę aktualizować stan gry, co jest... głupie. Za bardzo obciążysz tym serwer jeśli będziesz to robił np. na PHP, gdybyś całą aplikację pisał sam to inna sprawa... ale tego nie robisz, więc rozwiązanie jest następujące:

  1. Robisz tabelę w bazie danych z listą sesji użytkowników zarejestrowanych
  2. Dajesz w niej pola typu ID sesji, ID użytkownika i przedewszystkim... dokładną datę ostatniej aktywności użytkownika
  3. Dzięki dokładnej dacie aktywności wyliczasz delta time, różnicę czasu między każdą z aktywności
  4. Delta time wykorzystujesz do każdych obliczeń, np. ilość kasy jaka wpada użytkownikowi do kieszeni co minutę będzie liczona tak:
    $goldPerSecond = $goldPerMinute / 60;
    $gold += $deltaTime * $goldPerSecond;

  5. Zaraz po każdym wykonaniu kodu który przelicza takie rzeczy aktualizujesz datę aktualnej aktywności na obecną datę.
Coś takiego możesz również zrobić z uwzględnieniem pory dnia, np. nocą dostajesz mniej złota, to zwykłe warunki i kilka obliczeń.
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...