Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
635
Tıklama
1
Öne Çıkarma
Php'de sayılar ile captcha
W
8 yıl
Yüzbaşı
Konu Sahibi

Merhaba,

arkadaşlar ben php'de sayılar ile captcha yapmak istiyorum.

Örnek olarak :

5+2
8+7
10/2
50/10
2*10
90-5

Ama nasıl yapacağımı bilmiyorum. Sanırım bir array içine almam lazım. Ama onu rastgele seçmem lazım. Sizce nasıl olmalı?

Yardımınıza ihtiyacım var.



K
8 yıl
Teğmen

Php hakkinda bilgim yok fakat

Toplama bolme cikarma islemlerini fonksiyon olarak tanimlayip

0-4 arasi rastgele bir sayi secip if veya switch kullanarak bu sayinin degerine gore random bir islem ile random sayilari veya kendi belirledigin sayilari kullanarak yapabilirsin sanirim



< Bu ileti mobil sürüm kullanılarak atıldı >

D
8 yıl
Yarbay

Toplama işlemi için tam teşekküllü captcha örneği yapalım. Aşağıdaki kodları mathcaptcha.php olarak kaydediyoruz.

<?php 
session_start(); // Oturumu başlatıyoruz.

$n1=rand(1,9); // 1 ile 9 arasında rastgele sayı üretiyoruz.
$n2=rand(1,9); // 1 ile 9 arasında rastgele sayı üretiyoruz.

$cevap=$n1+$n2; // Yukarıda rastgele üretilen iki sayının toplamı.

$math = $n1." + ".$n2." Kaç eder? : ";
$_SESSION['soru'] = $cevap;

echo $math;

?>


Şimdi bu basit matematik sorusunun sorulacağı bir form olacak. Ben basit bir form yaptım. Aşağıdaki dosyayı da form.php olarak kaydediyoruz.

<html> 
<head>
<title>PHP'de sayılar ile captcha</title>
</head>
<body>
<form action="kaydet.php" method="post">
<?php include('mathcaptcha.php');?> <input name="captcha" type="text">
<br />
<input name="submit" type="submit" value="Gönder">
</form>
</body>
</html>


Bu formu boşuna yapmadık. "Gönder" butonuna basınca form bilgileri bir yere gönderecek. Ben kaydet.php dosyasına gönderdim. Orada matematik işlemi ve girilen form bilgileri kontrol edilecek. Artık veritabanına kayıt mı yapılır, e-posta mı gönderilir, ne yapılacaksa orada yapılır. Ben basit tutmak için sadece girilen matematik işleminin sonucunu kontrol eden kod yazdım. Aşağıdaki kodları da kaydet.php olarak kaydediyoruz.

<?php 
session_start();
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["soru"]==$_POST["captcha"]){
//Continue
$msg = "Doğru Cevap.";
echo $msg;

}
else{
$msg = "Yanlış Cevap.";
echo $msg;
}
?>


mathcaptcha.php, form.php ve kaydet.php dosyalarını aynı klasörde bulundurun. form.php dosyasını çalıştırdığınız zaman form çıkacak. Formun içinde mathcaptcha.php'den gelen basit toplama işlemini soracak. "Gönder" butonuna tıklayınca kaydet.php dosyasına gönderiyor. Burada, girdiğiniz toplama işleminin doğru veya yanlış olmasına göre iş yapacak.

mathcaptcha.php dosyasında 1 ile 9 arasında rastgele iki sayı üretilerek basit olması için sadece toplama işlemi sorulması için kodlanmıştır. Eğer dört işlemden herhangi birini rastgele sorması isteniyorsa 1 ile 4 arasında rastgele sayı üreterek örneğin;

$islem = rand(1,4);

Rastgele üretilen sayı;
1 ise toplama sorusu
2 ise çıkarma sorusu
3 ise çarpma sorusu
4 ise bölme sorusu

sorması için kodlanabilir. Bu kısmın kodlamasını da size bırakıyorum.

Toplama ve çarpma sorusu tamam da çıkarma sorusunda mesela "3 - 5 kaç eder?" diye bir soru ile karşılaşan biri "Bu ne biçim şey 3'den 5 çıkmaz ki..." diyebilir. Her kesimden kişinin sitenizi ziyaret edebileceğini unutmayın. Çünkü okullarda böyle öğretiliyor. Herkes liseye, üniversiteye gitmiyor. Ben böyle kişilerle çok karşılaştım. Yani çıkarma işleminde ilk sayının ikinci sayıdan büyük olması ayarlanmalıdır.

Bölme işlemi ise tam evlere şenlik. 10/2 veya 50/10 gibi tam bölünen bir soru olursa tamam da 9/7 gibi bir soru çıkarsa ne olacak? Bu soruya cevabı yazması da sıkıntı verilen cevabı kontrol etmesi de sıkıntı... Tabi ki bunların da çözümü var ama her şeyi hazır beklememek lazım. Biraz çalışmak lazım değil mi?

Hadi ben kaçtım. Size kolay gelsin.


Bu mesaja 1 cevap geldi.
W
8 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: DoubleDragon

Toplama işlemi için tam teşekküllü captcha örneği yapalım. Aşağıdaki kodları mathcaptcha.php olarak kaydediyoruz.

<?php 
session_start(); // Oturumu başlatıyoruz.

$n1=rand(1,9); // 1 ile 9 arasında rastgele sayı üretiyoruz.
$n2=rand(1,9); // 1 ile 9 arasında rastgele sayı üretiyoruz.

$cevap=$n1+$n2; // Yukarıda rastgele üretilen iki sayının toplamı.

$math = $n1." + ".$n2." Kaç eder? : ";
$_SESSION['soru'] = $cevap;

echo $math;

?>


Şimdi bu basit matematik sorusunun sorulacağı bir form olacak. Ben basit bir form yaptım. Aşağıdaki dosyayı da form.php olarak kaydediyoruz.

<html> 
<head>
<title>PHP'de sayılar ile captcha</title>
</head>
<body>
<form action="kaydet.php" method="post">
<?php include('mathcaptcha.php');?> <input name="captcha" type="text">
<br />
<input name="submit" type="submit" value="Gönder">
</form>
</body>
</html>


Bu formu boşuna yapmadık. "Gönder" butonuna basınca form bilgileri bir yere gönderecek. Ben kaydet.php dosyasına gönderdim. Orada matematik işlemi ve girilen form bilgileri kontrol edilecek. Artık veritabanına kayıt mı yapılır, e-posta mı gönderilir, ne yapılacaksa orada yapılır. Ben basit tutmak için sadece girilen matematik işleminin sonucunu kontrol eden kod yazdım. Aşağıdaki kodları da kaydet.php olarak kaydediyoruz.

<?php 
session_start();
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["soru"]==$_POST["captcha"]){
//Continue
$msg = "Doğru Cevap.";
echo $msg;

}
else{
$msg = "Yanlış Cevap.";
echo $msg;
}
?>


mathcaptcha.php, form.php ve kaydet.php dosyalarını aynı klasörde bulundurun. form.php dosyasını çalıştırdığınız zaman form çıkacak. Formun içinde mathcaptcha.php'den gelen basit toplama işlemini soracak. "Gönder" butonuna tıklayınca kaydet.php dosyasına gönderiyor. Burada, girdiğiniz toplama işleminin doğru veya yanlış olmasına göre iş yapacak.

mathcaptcha.php dosyasında 1 ile 9 arasında rastgele iki sayı üretilerek basit olması için sadece toplama işlemi sorulması için kodlanmıştır. Eğer dört işlemden herhangi birini rastgele sorması isteniyorsa 1 ile 4 arasında rastgele sayı üreterek örneğin;

$islem = rand(1,4);

Rastgele üretilen sayı;
1 ise toplama sorusu
2 ise çıkarma sorusu
3 ise çarpma sorusu
4 ise bölme sorusu

sorması için kodlanabilir. Bu kısmın kodlamasını da size bırakıyorum.

Toplama ve çarpma sorusu tamam da çıkarma sorusunda mesela "3 - 5 kaç eder?" diye bir soru ile karşılaşan biri "Bu ne biçim şey 3'den 5 çıkmaz ki..." diyebilir. Her kesimden kişinin sitenizi ziyaret edebileceğini unutmayın. Çünkü okullarda böyle öğretiliyor. Herkes liseye, üniversiteye gitmiyor. Ben böyle kişilerle çok karşılaştım. Yani çıkarma işleminde ilk sayının ikinci sayıdan büyük olması ayarlanmalıdır.

Bölme işlemi ise tam evlere şenlik. 10/2 veya 50/10 gibi tam bölünen bir soru olursa tamam da 9/7 gibi bir soru çıkarsa ne olacak? Bu soruya cevabı yazması da sıkıntı verilen cevabı kontrol etmesi de sıkıntı... Tabi ki bunların da çözümü var ama her şeyi hazır beklememek lazım. Biraz çalışmak lazım değil mi?

Hadi ben kaçtım. Size kolay gelsin.

Merhaba,

çok teşekkür ederim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.