1. Go to this page and download the library: Download geekk/multi-captcha library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
class CaptchaStore implements CaptchaStoreInterface {
protected $store;
protected $prefix;
protected $seconds;
public function __construct(Repository $store, $prefix = 'kcaptcha:', int $seconds = 5*60)
{
$this->store = $store;
$this->prefix = $prefix;
$this->seconds = $seconds;
}
protected function getStoreKey($key)
{
return "$this->prefix:{$key}";
}
public function getValue(?string $key = null): ?string
{
$value = $this->store->get($this->getStoreKey($key));
$this->store->forget($this->getStoreKey($key));
return $value;
}
public function setValue(string $value, ?string $key = null)
{
$this->store->put($this->getStoreKey($key), $value);
}
}
class CaptchaManager
{
protected $config;
protected $connectionName;
protected $connectionConfig;
public function __construct(array $config)
{
$this->config = $config;
}
private function loadDriverConfig()
{
$this->connectionName = $this->config['default'];
$this->connectionConfig = $this->config['connections'][$this->connectionName];
}
public function getCaptcha(): CaptchaInterface
{
$this->loadDriverConfig();
$driverName = $this->connectionConfig['driver'];
switch ($driverName) {
case 'recaptcha2':
return new ReCaptcha2($this->connectionConfig);
case 'hcaptcha':
return new HCaptcha($this->connectionConfig);
case 'kcaptcha':
$store = new CaptchaStore();
return new KCaptcha($this->connectionConfig, $store);
}
throw new \Exception(sprintf('Unknown captcha driver: %s', $driverName));
}
public function getRequest(Request $request): CaptchaRequestInterface
{
$driverName = $this->connectionConfig['driver'];
switch ($driverName) {
case 'recaptcha2':
return new ReCaptcha2Request(count($request->post()), $request->post(ReCaptcha2Request::RESPONSE_NAME), $request->ip());
case 'hcaptcha':
return new HCaptchaRequest(count($request->post()), $request->post(HCaptchaRequest::RESPONSE_NAME), $request->ip());
case 'kcaptcha':
return new KCaptchaRequest(count($request->post()),$request->post(KCaptchaRequest::RESPONSE_NAME), $request->post(KCaptchaRequest::KEY_NAME));
}
throw new \Exception(sprintf('Unknown captcha driver: %s', $driverName));
}
}