Merhaba,
Sever insanlar böyle oyunları hayırlı olsun şimdiden kolay gelsin.
Satır satır kodları okumak pek mümkün değil ve kodların da bi kısmını göndermişsiniz zaten. ps(); ne yapıyor onu da bilmeden biraz atma cevap olacak ama gördüğüm kadarıyla kişinin çalışma zamanını $worktime = security($_POST['worktime']); şununla alıyor ve direk mevcut zamana + olarak veritabanına ekliyorsunuz. Bu rahatlıkla spoof edilebilecek bir durum ki bu işlerle uğraşacak amatörler de ilk önce bu noktaları zorlarlar.
Hele bir de
<input type="hidden" name="money" value="' . $rowj['money'] . '">
<input type="hidden" name="gold" value="' . $rowj['gold'] . '">
şunları da korumuyorsanız bu input'lar arka planda değiştirilip 1000lerce altın sahibi olunabilir.
Kişinin işe başlama saatini tarayıcı taraflı tutar aradaki farkı tarayıcı taraflı hesaplayarak gönderirseniz bunu korumanız biraz zor. Son iş kayıt tarihini bakıp aradaki farkı alıp ondan az mı fazla mı bakılabilir ama yine de bu bir açık. Çünkü son iş tarihinden şuana kadar geçen zaman gösterilir, oyun yine maksimum faydayla kandırılır.
Velhasıl işe başlama zamanını sunucuda tutmalısınız. Ayrıca kodlarınızda idxx id'li 2 nesne var. Bir sayfada 1 id 1 tane olmalıdır. Ayrıca eğer yeni başladıysanız mysql PDO bakmanızı öneririm. Ayrıca kapsamlı bir oyun olacaksa bir de eliniz değmişken ileride rahat geliştirme yapabilmeniz için OOP'a bakmanızı öneririm.
Yolunuz uzun
Kolay gelsin, iyi senler.
Merhaba arkadaşlar,
Yukarıdaki resimde gördüğünüz gibi bir php tabanlı oyun üzerinde çalışıyoruz. Oyunda amaç para kazanıp zengin olmak ve daha güçlü olmak, tarayıcıda çalış butonuna basarak sürenin geçmesini bekleyerek belli sürelerde belli işlerde çalışıp para kazanılabiliyor. Yalnız oyunda şöyle bir sıkıntı var. Örneğin 1 saatlik işte çalışılacak, çalış butonuna basıldıktan sonra Cheat engine denen program ile tarayıcı hızlandırıldığında süre çok çabuk geçiyor ve yaklaşık 30 dakikada alınacak parayı oyuncu 1 - 2 dk içerisinde alabiliyor. Bu konuda ne yapabiliriz. Resmini gösterdiğim bölümün php dosyası aşağıdaki gibidir ;
<?php
include "core.php";
head();
$lang = new Language("languages/");
$lang->setLang(get_user_language($username));
@$tab = $_GET['tab'];
?>
<div class="row well">
<center><h2><i class="fa fa-briefcase"></i> <?= $lang->data["jobs"]; ?></h2><br /></center>
<div class="col-md-12">
<center>
<?php
$userid = get_userid($_SESSION['username']);
if (@$_POST['gowork']) {
$worktime = security($_POST['worktime']);
$money = security($_POST['money']);
$gold = security($_POST['gold']);
$jobid = security($_POST['jobid']);
$timeleft = time() + $worktime;
$insert = mysql_query("INSERT work (userid, jobid, money, gold, timeleft) VALUES ('$userid', '$jobid', '$money', '$gold', '$timeleft')");
echo '<meta http-equiv="refresh" content="0;url=jobs">';
}
if (@$_POST['getprice']) {
$sel = mysql_query("SELECT * FROM work WHERE userid='$userid'");
$r = mysql_fetch_array($sel);
$money = $r['money'];
$gold = $r['gold'];
$upd = mysql_query("UPDATE users SET money=money+$money, gold=gold+$gold WHERE id='$userid'");
$del = mysql_query("DELETE FROM work WHERE userid='$userid'");
echo okbox('' . $lang->data["workday-over"] . '. ' . $lang->data["you-earn"] . ' <b><i class="fa fa-money"></i> $' . $money . ' ' . $lang->data["moneysm"] . '</b> ' . $lang->data["and"] . ' <b><i class="fa fa-inbox"></i> ' . $gold . ' ' . $lang->data["goldsm"] . '</b> .');
echo '<meta http-equiv="refresh" content="3;url=jobs">';
}
?>
<?php
$username = $_SESSION['username'];
$userid = get_userid($username);
$sqlj = mysql_query("SELECT * FROM jobs");
while ($rowj = mysql_fetch_array($sqlj)) {
echo '
<div class="well2 col-md-3">
<h4>' . $rowj['name'] . '</h4>
<br/>
<img src="' . $rowj['image'] . '" width="150px">
<br/>
' . $lang->data["time"] . ': <b>' . $rowj['time'] . ' ' . $rowj['timetype'] . '</b><br/>
' . $lang->data["money"] . ': <b>$' . $rowj['money'] . '</b><br/>
' . $lang->data["gold"] . ': <b>' . $rowj['gold'] . '</b><br/><br/>
';
$sql = mysql_query("SELECT * FROM work WHERE userid='$userid' and jobid='$rowj[id]'");
if (mysql_num_rows($sql) > 0) {
$work = mysql_fetch_array($sql);
$voteend = $work['timeleft'] - time();
echo "<script src=\"js/clock.js\" type=\"text/javascript\"></script>
<div id=\"bxx\"></div>
<script src=\"js/clock.js\" type=\"text/javascript\"></script>
<div id=\"bxx\"></div><script language=\"javascript\">pp='$voteend'; pk='1'; pl='$username'; ps=''; t(); </script><br />";
} else {
if ($rowj['timetype'] == "saat") {
$workseconds = $rowj['time'] * 3600;
} else {
if ($rowj['timetype'] == "dakika") {
$workseconds = $rowj['time'] * 60;
} else {
if ($rowj['timetype'] == "saniye") {
$workseconds = $rowj['time'];
}
}
}
$sql = mysql_query("SELECT * FROM work WHERE userid='$userid'");
if (mysql_num_rows($sql) == 0) {
echo '
<form action="" method="POST">
<input type="hidden" name="jobid" value="' . $rowj['id'] . '">
<input type="hidden" name="worktime" value="' . $workseconds . '">
<input type="hidden" name="money" value="' . $rowj['money'] . '">
<input type="hidden" name="gold" value="' . $rowj['gold'] . '">
<input type="submit" class="btn btn-primary" name="gowork" value="' . $lang->data["start-work"] . '">
</form>
';
} else {
echo '<font color="#F27D00"><b>' . $lang->data["must-finish-work"] . '</b></font>';
}
}
echo '
</div>
';
}
?>
</center>
</div>
</div>
<?php
footer();
?>Yardımınızı bekliyorum.