У меня ajax проблема с настройкой капчи изображения из капчи. php в sr c в регистре. php - PullRequest
1 голос
/ 17 февраля 2020

Я использовал этот код для капчи, на первый взгляд он работает правильно, но, к сожалению, вместо установки полученных данных из капчи. 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();
    ?>
...