kontrol eğer son bir saat içinde kayıtlı bir kullanıcı

6 Cevap php

Ben bir kullanıcı zaten hesap son saat yarattı eğer bu kod parçası kontrol etmek zorunda:

$result = mysql_query("SELECT * FROM accounts WHERE registration_ip = '$_SERVER[REMOTE_ADDR]' AND created > ".(time() - 3600));

if (mysql_num_rows($result) > 0)
    exit('Blablal')

Ben bunu yapmak istiyorum gibi, ben istiyorum kaç hesapları yapabilirsiniz çıkmak değildir.

Herhangi obivious sorun görüyor? Benim db tablesandfields doğru

6 Cevap

Senin sorunun muhtemelen bu, $ _SERVER [REMOTE_ADDR] olduğunu

Bir çift tırnaklar içine doğrudan o katıştırma. Eğer çift tırnaklı dize bir dizi erişmek istediğinizde size kıvırcık parantezler içinde değişken dizi erişimi koymak gerekir.

Düzeltilmiş dize:

"SELECT * hesaplarına WHERE registration_ip = '{$ _SERVER [' REMOTE_ADDR ']}' VE> yarattı" (time () - 3600).

Ayrıca, Alway yerine 'REMOTE_ADDR' veya "REMOTE_ADDR" bir REMOTE_ADDR kullanılan indeksler alıntı

Umarım bu yardımcı olur.

ben sadece şimdi çalışıyor boşluk çıkardı

registration_ip='$_SERVER[REMOTE_ADDR]'

registration_ip = '$_SERVER[REMOTE_ADDR]' maddesini kaldırarak test edin.

Ben yerel olarak test edilmiş ve beklendiği gibi benim için, o davranır. Ben başka bir yerde sorun sorguda olmadığını söylüyorlar, ama olacaktır. Verilerinizi kontrol edin ve beklendiği gibi sokulmaktadır emin olun.

Ayrıca, yerine SELECT * sütunlarını saymak için SELECT COUNT kullanmak isteyebilirsiniz - bu hızlı olmalıdır.


  $result = mysql_query("SELECT COUNT(*) FROM accounts WHERE registration_ip = '$_SERVER[REMOTE_ADDR]' AND created > ".(time() - 3600));

  $count = mysql_fetch_array($result);
  if ($count[0] > 0) exit('BLAH');

Yada cevabı doğrudur. Ben yapmak istiyorsunuz sadece diğer yorum sen değişken geçersiz alır off şansı SQL enjektö karşı korumak için mysql_real_escape ile [REMOTE_ADDR] $ _SERVER kaçış olduğunu

Sen olan PHP SQL içine gömmek olan şeyler etrafında kullanımını {} yapmak gerekir. Ben bu işe gerektiğini düşünüyorum. Ben biraz sık sık açılır gibi görünüyor bana zaman kazandırır ayıklamayı bulduk gibi ben hep bunu.

$result = mysql_query("SELECT COUNT(*) FROM accounts WHERE registration_ip = '{$_SERVER[REMOTE_ADDR]}' AND created > ".({time()} - 3600));

Bu işe yaramazsa, bir değişken içine Sorguyu kaydetmek gönderirken ne olduğunu görmek için sayfaya echo.

$sql = "SELECT COUNT(*) FROM accounts WHERE registration_ip = '{$_SERVER[REMOTE_ADDR]}' AND created > ".({time()} - 3600)";

echo $sql;