PHP İletişim Formu Zamanlama İşlemi Ne Şekilde Yapılabilir ?

Başlatan S3CT0R, 11 Şubat 2013 - 23:07:48

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

S3CT0R

Merhaba,benim sorum şu; Bir iletişim formu var ve bu iletişim formuna örneğin 5 saniyeden az bir zamanda sadece tek bir mail gönderilebilecek bir nevi bot koruması yani.
Bana acilen örnek bir kod parçası veya biraz ip ucu verebilir misiniz bu konuda ?

yakusha

http://www.google.com/recaptcha işine yarayabilir.

Bir tanecik php Class'ını tanıttıktan sonra şu kadarcık bir denetim işi görüyor. Kimse recaptha doldurmadan mail atamayacağı için spam derdin de ortadan kalkıyor.

            if (!$_POST["recaptcha_response_field"])
            {
                $islem_bilgisi = 'Güvenlik sorusunu boş bırakmayınız.<br />';
            }

            if ($_POST["recaptcha_response_field"])
            {
                $resp = recaptcha_check_answer ($privatekey,
                $_SERVER["REMOTE_ADDR"],
                $_POST["recaptcha_challenge_field"],
                $_POST["recaptcha_response_field"]);

                if (!$resp->is_valid)
                {
                    # set the error code so that we can display it
                    $error = $resp->error;
                    $islem_bilgisi = 'Güvenlik sorusuna Yanlış bir cevap verdiniz.<br />';
                }
            }


Daha farklı ve uçuk bir yol istersen, her mail işleminden sonra bir unixtimestamp alıp, mesaj gönderim sayfasına entegre edebilirsin. Henüz yeterli zaman dolmamışsa bir uyarı mesajıyla 5 dakika sonra tekrar deneyin diyebilirsin.



Artık bu forumu kullanmıyor.

darkbourne

Ajax ile bu tarz birşey yapılabilir aşağıda formu öncelikle post ediyoruz daha form başarıyla gönderilirse formun butonu gizleniyor daha sonra settimeout fonksiyonu 5 saniye sonra butonu tekrar aktif ediyor. Formun butonuna class="buton" eklemeyi unutma buton gizleme ve gösterme için. Umarım çalışır deneme şansım olmadı en azından buradan bir fikir çıkarabilirsin. İyi çalışmalar.


<script type="text/javascript">
$(document).ready(function() {
function gonder(){
var veriler=$('#form_adi').serialize();
ajax({
type:"POST",
url:"form_kaydet.php",
data:bilgiler,
success:function(cevap){
if(cevap=="ok")
{
$('#buton').hide();
}}
});

setTimeout(function () {
$('#buton').show();
}, 5000);
}
});
</script>

<input class="buton" type="submit" name="Submit" value="Gönder" onclick="gonder();" />