Ošetření formuláře captchou
- scientific
- Člen | 94
Ahoj, všem, na jiném projektu používáme catchu, chtěl jsem tu captchu použít i pro tento projekt, mám však zádrhel v její implementaci.
Znění chybovky:
Fatal Error
Class 'App\Forms\Securimage' not found
Kód způsobující chybovku je zakomentován, konkrétně řádek, kde se vytváří instance třídy Secureimage:
public function success(Form $form, $values)
{
// include_once(dirname(__FILE__)."/../../www/securimage/securimage.php");
// $securimage = new Securimage();
// if (!$securimage->check($_POST['captcha_code'])) {
// $form->addError("E_CAPTCHA");
// return;
// }
try {
$user = $this->parent->getUser();
Pro jistotu zmíním, že cesta ke třídě je uvedena správně.
Jak by se prosím dalo zařídit, aby nette přestalo blbnout s nějakým „App\Forms\Securimage“, a fungovala includovana třída securimage.php
Díky za rady.
Editoval scientific (4. 1. 2021 13:33)
- David Matějka
- Moderator | 6445
ahoj,
- ta chyba nesouvisí s nette. doporucuju nastudovat, jak funguji namespaces:
https://www.php.net/…mespaces.php, pokud nemas Securimage v
use
ani neuvádíš FQN, tak se PHP snaží třídu hledat v aktuálním namespace - preferoval bych nějakou normální moderní captchu, jako je google recaptcha
- pokud bys ji i tak chtěl použít, nechá se nainstalovat přes composer https://packagist.org/…p/securimage
- scientific
- Člen | 94
Vím, jak fungují jmenné prostory, jen jsem si toho nevšiml. Já je nepoužívám, v jednom projektu jmenný prostor byl a ve druhém ne, tak jsem si nevšiml.
Secureimage a jednu další jeho třídu jsem přidal do namespace a funguje, děkuji pěkně.