The form works fine without captcha, but it only works 1 time when I add captcha. and captcha numbers always stay the same. In ajax form, I want the captcha to be refreshed after every submission, that's why I added it but it's not working either.
img = document.getElementById("capt");
img.src = "captcha.php"
Thank you in advance for your help on how to solve this problem.
index.php
<!DOCTYPE html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
</head>
<body>
<form name="checkaddress" id="checkaddress" method="post">
<input type="text" id="v" value="" name="v"><br>
<img src="captcha.php" id="capt"> <input type="text" size="10" name="deger" id="deger">
<button type="submit">Enter</button>
</form>
<span class="vertr"></span>
<script>
$('#checkaddress').on('submit', function(e) {
e.preventDefault();
// get formdata in a variable that is passed to the ajax request
var dataToPassToAjax = $(this).serialize();
$.ajax({
url: "send.php",
type: "POST",
data: dataToPassToAjax,
cache: false,
success: function(resultHtml) {
// add the returned data to the .vertr element
$('.vertr').html(resultHtml).fadeIn('slow');
$('#v').val('');
$('#deger').val('')
img = document.getElementById("capt");
img.src = "captcha.php"
}
});
// cancel the default form submit
return false;
});
</script>
</body>
</html>
send.php:
<?php
session_start();
if ($_POST['deger'] == $_SESSION['captcha']) {
$v= $_POST['v'];
echo "Hello $v";
}
else echo "CAPTCHA Not Detected";
?>
capctha.php
<?PHP
$image = @imagecreatetruecolor(95, 30) or die("hata oluÅŸtu");
// create the background color
$background = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
imagefill($image, 0, 0, $background);
$linecolor = imagecolorallocate($image, 0xCC, 0xCC, 0xCC);
$textcolor = imagecolorallocate($image, 0x33, 0x33, 0x33);
// generate random lines
for ($i = 0; $i < 2; $i++) {
imagesetthickness($image, rand(1, 3));
imageline($image, 0, rand(0, 30), 95, rand(0, 30), $linecolor);
}
session_start();
// generate random numbers
$sayilar = '';
for ($x = 15; $x <= 75; $x += 20) {
$sayilar .= ($sayi = rand(0, 9));
imagechar($image, rand(3, 5), $x, rand(2, 14), $sayi, $textcolor);
}
// we pass the numbers to the session
$_SESSION['captcha'] = $sayilar;
// the image is displayed and then deleted
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
Via Active questions tagged javascript - Stack Overflow https://ift.tt/rQnPDdC
Comments
Post a Comment