php-simple-captcha
php-simple-captcha copied to clipboard
Base64 encoding does not work
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
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.
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.
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 😊