- 31 Ocak 2016
- 1,961
- 2
- 39
Merhaba,
Bu yazıda, çoğu zaman canınızı sıkan keşke olmasa dediğiniz can sıkıcı insan doğrulama testleri CAPTCHA ve reCAPTCHA adı verilen biraz daha az can sıkıcı kuzenleri hakkında bilmeniz gerekenleri anlatıp kendi sitenize nasıl ekleyebileceğinizi anlatacağım. Önümüzdeki birkaç dakika içinde şunları öğreneceksiniz:
Bu yazıda, çoğu zaman canınızı sıkan keşke olmasa dediğiniz can sıkıcı insan doğrulama testleri CAPTCHA ve reCAPTCHA adı verilen biraz daha az can sıkıcı kuzenleri hakkında bilmeniz gerekenleri anlatıp kendi sitenize nasıl ekleyebileceğinizi anlatacağım. Önümüzdeki birkaç dakika içinde şunları öğreneceksiniz:
Konu içeriği
CAPTCHA nedir?
CAPTCHA, web sitelerinin formlar veya aramalar gibi şeylere erişmenize izin vermeden önce sizi çözmeye zorlayabileceği bir test türüdür. CAPTCHA'nın açılımı : "Completely Automated Public Turing test to tell Computers and Humans Apart" dır. Açılımı türkçeye "İnsan ve Bilgisayar Ayrımı Amaçlı Tam Otomatik Genel Turing Testi" şekilde çevirmiş.
Adından da anlaşılacağı gibi, bu testlerin amacı o an işlem yapan kullanıcının insan mı yoksa makine mi olduğuna karar vermektir. Bu testler, spam gönderenlerin ve bilgisayar korsanlarının otomatik araçlar kullanmasını engellemek için oluşturulmuştur. CAPTCHA'lar bu tür sorunlara karşı bir savunma olarak geliştirilmiştir. CAPTCHA'lar bir insanın tamamlaması için "kolay" fakat bilgisayarın tamamlaması zor bir test oluşturmaktır. Test doğru bir biçimde tamamlandığı takdirde sizin bir insan olduğunuzu varsayar ve işleminizi rahatlıkla gerçekleştirebilirsiniz.
Yapay zeka teklonojisinin geliştirilmesiyle birlikte CAPTCHA sorularu yapay zekalar tarafından çözülmeye başlandı o yüzden CAPTCHA kullanımının yerini Google'un geliştirdiği ReCAPTCHA teklonojisi aldı.
ReCAPTCHA nedir?
reCAPTCHA, Google'un geliştirdiği CAPTCHA'nın gelişmiş sürümüdür. Bu CAPTCHA türü, kullanıcılar ve bir web sitesi arasındaki etkileşimlere risk analizi algoritmaları uygulayarak kullanıcının insan veya yazılım olma olasılığını gösteren bir paun verir. Web sitesi Yöneticisi, oluşturulan puana bakarak kullanıcı tarafından gönderilen verilere ne olacağına karar verir. Bazen bir insan olarak ben bile çözmekte zorlanıyorum
ReCaptcha v2 nasıl kullanılır?
Gereksinimler
HTML hakkında temel bilgiler
PHP ve değişkenleri ve nesneleri nasıl çağrıldığı hakkında düşük düzeyde bilgi
PHP 5.6+ kurulu olan web sitesi veya yerel sunucu (localhost)
ReCaptcha nasıl site kaydı oluşturulur?
1- ReCaptcha Admin paneline erişmek için bir Google hesabınızın olması gerekir.
2- Vermiş olduğum bağlantıya tıklayıp yeni site kaydı yapmalısınız.
- WAMP veya XAMPP sunucunuzda test etmek için, etiket ve alan adı kutucuklarına localhost yazabilirsiniz.
3- Site anahtarını ve gizli anahtarı kaydedin , böylece bu anahtarları daha sonra komut dosyasında kullanabilirsiniz.
4- Web klasörünüzde yeni bir .php dosyası oluşturun.
5- Sonra aşağıdaki kodu php dosyanıza yapıştırabilirsiniz.
Kod:
<?php
class Captcha
{
private $secret = 'GİZLİ_ANAHTAR'; // Gizli Anahtar
private $url = 'https://www.google.com/recaptcha/api/siteverify'; // API URL
public function Check()
{
$get = file_get_contents($this->url . '?secret=' . $this->secret . '&response=' . $_POST['g-recaptcha-response']);
$data = json_decode($get);
if ($data->success == true)
{
return true;
}
return false;
}
}
$captcha = new Captcha();
?>
<html>
<head>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form method="POST">
<div class="g-recaptcha" data-sitekey="SITE_ANAHTARI"></div> <!-- //Site anahtarı//-->
<input type="submit" name="submit" value="Submit" />
</form>
<?php if (isset($_POST['submit'])): ?>
<?php if ($captcha->Check()): ?>
Tebrikler, işe yaradı!
<?php else: ?>
Captcha yanlış veya doğru ayarlanmadı!
<?php endif; ?>
<?php endif; ?>
</body>
</html>
6- Koda'da SITE_ANAHTARI ve GİZLİ_ANAHTAR yazan yerleri size verilen anahtarlar ile değiştirin.
7- Ve oluşturduğunuz php dosyasını apache sunucunuzda açarak test edin.
CAPTCHA nasıl oluşturulur?
1- captcha.php ve kontrol.php adında php dosyaları oluşturun.
2- captcha.php dosyasına aşağıdaki kodu yapıştırın.
3- kontrol.php dosyasına aşağıdaki kodu yapıştırın.
4- Ve oluşturduğunuz php dosyasını apache sunucunuzda açarak test edin.
2- captcha.php dosyasına aşağıdaki kodu yapıştırın.
Kod:
<?php
session_start();
$kod = substr(md5(uniqid(rand(0, 6))), 0, 6);
$_SESSION['kod'] = $kod;
header('Content-type: image/png');
$kod_uzunluk = strlen($kod);
$genislik = imagefontwidth(5) * $kod_uzunluk;
$yukseklik = imagefontheight(5);
$resim = imagecreate($genislik, $yukseklik);
$arka_renk = imagecolorallocate($resim, 0, 0, 0);
$yazi_renk = imagecolorallocate($resim, 255, 255, 255);
imagefill($resim, 0, 0, $arka_renk);
imagestring($resim, 5, 0, 0, $kod, $yazi_renk);
imagepng($resim);
?>
3- kontrol.php dosyasına aşağıdaki kodu yapıştırın.
Kod:
<?php
session_start();
$kod=$_SESSION['kod'];
echo "<img src='capcta.php'/>";
echo "<br/><br/><br/>
<form action='' method='POST'>
<input type='text' name='kontrol'/>
<input type='submit'/>
</form>
";
if($_POST){
$kntrl=$_POST['kontrol'];
if($kntrl==$kod){
echo "Kod doğru";
}
else{
echo "yanlıs kod girdiniz dekrar deneyin";
}
}
else{
echo "";
}
?>
4- Ve oluşturduğunuz php dosyasını apache sunucunuzda açarak test edin.
Daha zor CAPTCHA için bunu kullanabilirsiniz. CAPTCHA resimlerinin ve yazılarının rengini değiştirir
Üstü çizili sayılar üretmesini istiyorsanız aşağıdaki kodu kullanabilirsiniz.
Kod:
$arka_renk = imagecolorallocate($resim, rand(0, 255), rand(0, 255), rand(0, 255));
$yazi_renk = imagecolorallocate($resim, rand(0, 255), rand(0, 255), rand(0, 255));
Üstü çizili sayılar üretmesini istiyorsanız aşağıdaki kodu kullanabilirsiniz.
Kod:
for ($i = 0; $i < 6; $i++) {
imageline($resim, rand(0, 5) * 10, rand(0, 10), rand(0, 10) * 0, 10, $yazi_renk); //imagefill($resim, 0, 0, $arka_renk); yazısının altına eklemelisiniz !!!!!
}
Son düzenleme: