Birkaç günlüğüne bir kod parçası üzerinde çalışıyorum ama bunu bir şekilde veri 1'e aktarmak için bunu alamıyorum . Temel olarak, elde etmeye çalıştığım şey, kullanıcı "paraları topla" düğmesine bastığında, 1 değerini veritabanıma geçirir. Her gün saat 12'de "dailyfree" sütunu MySQL olayı ile 0'a resetlenir, böylece ertesi gün kullanıcı veritabanındaki "dailyfree" değeri tekrar 0 olduğundan tekrar butonuna basabilir. Yine de kullanıcının veritabanındaki değer sıfırlanmadan önce "paraları topla" seçeneğini tıklayamasını istemiyorum. Sorun, kullanıcı düğmeye bastığında, ona serbest paralar vermesi ancak 1 değerinin veritabanına geçmemesidir. "Dailyfree" sütunu, düğmeye basıldıktan sonra hala 0'dır. Bunun neden olduğunu bilen var mı?PHP işlevinde AJAX çağrısı, bu veritabanına bir değer girmesini sağlamıyor
Bilgileriniz için: Kodlama konusunda çok yeni!
Şu anda burada çalışıyorum.
JavaScript:
function free(){
var str = "username";
var term = "searched_word";
var index = str.indexOf(term);
if (index != -1) {
var daily = 1;
$.ajax({
url:"/free?daily="+daily,
success:function(data){
try{
data = JSON.parse(data);
console.log(data);
if(data.success){
bootbox.alert("Success! You've claimed 100 free credits!");
}else{
bootbox.alert(data.error);
}
}catch(err){
bootbox.alert("Javascript error: "+err);
}
},
error:function(err){
bootbox.alert("AJAX error: "+err);
}
});
}
else {
bootbox.alert("Your username does not contain the searched_word!");}
}
function disDelay(obj){
obj.setAttribute('disabled','disabled');
setTimeout(function(){obj.removeAttribute('disabled')},86400)
}
Düğme kendisi
<div class="text-right">
<button class="btn btn-success btn-block" id="free" onclick="free(); disDelay(this)">Collect free coins</button>
</div>
PHP Gerçekten bunu içine değerini girmeyecektir neden bulmama yardım umut
$freecoins = 100;
case 'free':
if(!$user)
exit(json_encode(array('success'=>false, 'error'=>'You must login to access the redeem.')));
$daily = 1;
if(!preg_match('/^[a-zA-Z0-9]+$/', $daily)) {
exit(json_encode(array('success'=>false, 'error'=>'Code is not valid')));
} else {
$sql = $db->query('SELECT * FROM `users` WHERE `dailyfree` = '.$db->quote($dailyfree));
if($sql->rowCount() != 0) {
$row = $sql->fetch();
if($row['user'] == $user['userid'])
exit(json_encode(array('success'=>false, 'error'=>'You have already redeemed your daily reward!')));
$db->exec('INSERT INTO `users` SET `dailyfree` = '.$dailyfree.' , `balance` = `balance` + '.$freecoins.' WHERE `userid` = '.$db->quote($user['userid']));
exit(json_encode(array('success'=>true, 'credits'=>$freecoins)));
} else {
exit(json_encode(array('success'=>false, 'error'=>'Code not found')));
}
}
break;
benim veritabanı! Neyse, size çok güzel bir gün diliyorum :) Yardımlarınız ve zamanınız için teşekkürler!
** UYARI bakmak zaman güncellemek istiyorsanız **: Ne zaman PDO kullanarak, yer tutucu değerleri ile [hazırlanmış ifadeler] (http://php.net/manual/en/pdo.prepared-statements.php) kullanmalı ve kullanıcı verilerini ayrı argümanlar olarak sunmalısınız. Bu kodda potansiyel olarak ciddi [SQL enjeksiyon hataları] var (http://bobby-tables.com/). Asla dize enterpolasyonu veya birleştirme kullanmayın ve yerine [hazırlanmış ifadeler] (http://php.net/manual/en/pdo.prepared-statements.php) yer tutucu değerleri ile kullanın. Bir hata yapmak ve bu $ db-> quote() 'çağrılarından birini atlamak bazen birilerinin sitenizden taviz vermesi için gereken süredir. – tadman