S1SYPHOS / php-simple-captcha

Simple captcha generator
https://codeberg.org/S1SYPHOS/php-simple-captcha
MIT License
23 stars 3 forks source link

Base64 encoding does not work #4

Open blablabla1234678 opened 10 months ago

blablabla1234678 commented 10 months ago

I am trying to use base64 encoded image, but it runs on this error:

Typed property SimpleCaptcha\Builder::$image must not be accessed before initialization

#0 /.../vendor/s1syphos/php-simple-captcha/src/Builder.php(1016): SimpleCaptcha\Builder->gd2img()
#1 /.../vendor/s1syphos/php-simple-captcha/src/Builder.php(1031): SimpleCaptcha\Builder->output()
#2 /.../vendor/s1syphos/php-simple-captcha/src/Builder.php(1046): SimpleCaptcha\Builder->fetch()
#3 /.../presentation/template/registration.php(23): SimpleCaptcha\Builder->inline()

All I do is instantiating the Builder class with the captcha string (only English characters and numbers) and calling the inline method:

        return $this->renderer->render($response, 'registration.php', [
            'csrf' => $this->csrf, 
            'captcha' => new CaptchaBuilder($this->security->getCaptcha()), 
            'values' => $values, 
            'errors' => $errors
        ]);
<img src="<?php $html->addAttribute($captcha->inline()); ?>" />

I guess the bug is in your code. https://stackoverflow.com/a/59265626/607033

blablabla1234678 commented 10 months ago

Probably GD is not working on my server and the error message is not that helpful. At least in a different lib writes, that it got null instead of GD Image.

blablabla1234678 commented 10 months ago

Nope, I checked, GD is enabled. The problem is with the code. Either the upper is not enough to render the captcha or there is a bug in the lib. I use PHP 8.2.

S1SYPHOS commented 6 months ago

Sorry for not responding, as you may already have guessed, my time and resources right now are very limited. Thanks for bringing this to my attention! I'll look into it as soon as possible 😊