Я использовал этот код для капчи, на первый взгляд он работает правильно, но, к сожалению, вместо установки полученных данных из капчи. php для src
изображения на странице регистра, он добавляет некоторые дополнительные символы, такие как %
в имени изображения и, наконец, он показывает ошибку, подобную этой: image1581924445% 20% 20% 20% 20% 20% 20% 20% 20.png: 1 GET http://localhost/eshop/image1581924445%20%20%20%20%20%20%20%20.png 404 (Не Найдено)
<div style="height: 60px;">
<span id="onvan" >captcha<img src="img/star.png" style="width: 8px; height: 8px;"></span>
<input type="text" name="captcha" style="width: 150px; direction: ltr;"><img id="captcha" src="image1581922447.png" style="float: right; height: 52px; margin-right: 20px;">
</div>
<script>
$.ajax({
url:'captcha.php'
})
.done(function(msg){
$("#captcha").attr('src','image'+msg+'.png');
})
</script>
<?php
session_start();
function create_img(){
$time=round(microtime(true)*1000);
$image;
$image=imagecreate(200,50);
$background_color=imagecolorallocate($image,255,255,255);
$text_color=imagecolorallocate($image,0,0,0);
$line_color=imagecolorallocate($image,0,255,0);
$pixel_color=imagecolorallocate($image,255,0,0);
imagefilledrectangle($image,0,0,200,50,$background_color);
for($i=0;$i<3;$i++){
imageline($image,0,rand(0,50),200,rand(0,50),$line_color);
}
for($i=0;$i<1000;$i++){
imagesetpixel($image,rand(0,200),rand(0,50),$pixel_color);
}
$letters="qwe23rtyuio45678plkjhgfdsazxcvbnm190";
$len=strlen($letters);
$word="";
$font='font/arial.TTF';
$font=(stream_resolve_include_path($font));
for($i=0;$i<6;$i++){
$letter=$letters[rand(0,$len-1)];
imagettftext($image,20,rand(0,25),25+($i*30),25,$text_color,$font,$letter);
$word=$word.$letter;
}
$_SESSION['captcha']=$word;
imagepng($image,"image".$time.".png");
echo $time;
}
create_img();
?>