Q'nuz iki bölümden oluşuyor, hem jeroen hem de anubhava'nın çözümleri 1. bölümde çalışıyor - içeriğe / içeriğe erişimi reddediyor. anubhava's da bölüm II için çalışıyor. İkincisini tercih ederim çünkü birDOCROOT/.htaccess
yine de bir kullanıyorum ve bu tüm kontrolü tek bir dosyada tutuyor.
Ancak tartışmak istemediğim şey, "erişimi reddetme" kavramı submit.php
. Kullanmak istemiyorsansubmit.php
Kullanmak neden DOCROOT'da var? Buradaki cevabın, onu bazı biçimlerde bir eylem hedefi olarak kullanmanız ve yalnızca form gönderildiğinde ve örneğin bir spambottan değil, doğrudan gönderildiğinde ateşlenmesini istemenizden şüpheleniyorum.
Bu doğruysa, anubhava'nın II. Bölümünü kullanamazsınız çünkü bu, formunuzun başarısız olmasına neden olur. Burada yapabilecekleriniz (i) .htaccess
yönlendirenin kendi dizin sayfanız olduğundan emin olmak için yapılan kontrol:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
Ve (ii) PHP index.php form oluşturucunuzun içinde bir zaman damgası ve doğrulama için bazı gizli alanlar bulunur. Doğrulama, örneğin, zaman damgasının bir MD5'inin ilk 10 karakteri ve bazı dahili sırlar olabilir. Gönderiyi işlerken, daha sonra (i) zaman damgası ve doğrulama eşleştiğini ve (ii) zaman damgasının, örneğin geçerli zamanın 15 dakikası içinde olduğunu doğrulayabilirsiniz.
Bu, bir spam göndericinin geçerli bir zaman damgası / doğrulama çifti almasının tek pratik yolu, bir formu ayrıştırmak olabilir, ancak bu sıyrığın yalnızca 15 dakikalık bir ömrü olacaktır.