Die automatische Injection machst du auf JS-Basis, was den Zweck des Plugins ein gutes Stück weit ad absurdum führt: Bots führen in der Regel aus performancegründen kein JS aus, somit wird kein Feld injected und erst recht auch nicht befüllt - dein Honeypot greift also nie.
Beiträge von SniperSister
-
-
-
-
-
-
-
Grundsätzlich: es drängt sich der Eindruck auf, dass du ein paar Wissenslücken bei verschiedenen fundamentalen Themen hast. Das betrifft insbesondere Namespaces (https://www.php.net/manual/en/language.namespaces.php), Autoloading (https://manual.joomla.org/docs/general-c…sses-with-psr4/) und Dependency Injection (https://manual.joomla.org/docs/general-c…ency-injection/). Schau unbedingt nochmal intensiv in die vorhandene Dokumentation und verfügbare Beispielerweiterungen um die Grundkonzepte zu verinnerlichen, ansonsten ist es stochern im Nebel und das ist nicht so recht zielführend.
Beispiel Serviceprovider:
PHP
Alles anzeigen<?php defined('_JEXEC') or die; use Joomla\CMS\Extension\ComponentInterface; use Joomla\CMS\Extension\MVCComponent; use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory; use Joomla\CMS\Extension\Service\Provider\MVCFactory; use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; return new class implements ServiceProviderInterface { public function register(Container $container): void { $container->registerServiceProvider(new MVCFactory('\\PasswordGenerator\\Component\\Passwordgenerator')); $container->registerServiceProvider(new ComponentDispatcherFactory('\\PasswordGenerator\\Component\\Passwordgenerator')); $container->set( ComponentInterface::class, function (Container $container) { $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class)); $component->setMVCFactory($container->get(MVCFactoryInterface::class)); return $component; } ); } };
-
-
-
Das Problem ist nicht der fehlende Dispatcher (denn die provider.php verweist auf den Default Dispatcher) sondern die unvollständige provider.php, die keine Komponente registriert und die keinen korrekten Namespace angibt. Vergleich siehe hier:
manual-examples/component-exampleform/com_exampleform/administrator/components/com_exampleform/services/provider.php at main · joomla/manual-examplesExamples for manual tutorials. Contribute to joomla/manual-examples development by creating an account on GitHub.github.com -
jumbo125 Joomla hat einen eigenen Plugin-Typ für Captchas, damit kann man das Rendering der Felder sowie die Prüfung abstrakt im Plugin als Methoden bereitstellen und hat damit eine einheitliche Schnittstelle, auf die Erweiterungsentwickler zurückgreifen können. Simples Beispiel: https://github.com/pe7er/hCaptcha…a4/hcaptcha.php
Deine Copy&Paste Variante ist "unüblich" - und im Kontext von Core und Dritterweiterungen auch schlicht unpraktikabel, weil dein Custom Code bei jedem Update überschrieben wird. -
Das sieht unnötig komplex aus. Orientier dich an den Namespaces der Core Komponenten. In der XML wird dort jeweils EIN "Basis-Namespace" definiert: https://github.com/joomla/joomla-…wrapper.xml#L13
Bei den Backend Klassen wird an diesen Basis-Namespace ein \Administrator\ angehangen und dann gehts relativ zum src Verzeichnis weiter: https://github.com/joomla/joomla-…mponent.php#L11
Im Frontend ist es das gleiche Prinzip nur mit Site: https://github.com/joomla/joomla-…troller.php#L11 -
-
Moderationshinweis: Ich habe 3 Posts entfernt, die keinen konkreten Mehrwert zur Fragestellung beigesteuert haben.
Zum konkreten Problem: hast du das Problem mal bei deinem Hoster geschildert? Aus dem Tor Netzwerk kommt überproportional viel Schadtraffic, daher werden IPs von Exit Nodes gerne mal gesperrt. -
-
-
-
Erlaubt mir die naive Frage: hat jemand von euch den Bug auch gemeldet? In der Echokammer des deutschsprachigen Forums bringt eine slche Meldung ja schließlich nichts.
-
Meinen Respekt, richtiges Fachwissen ist halt doch super!
Fachwissen setzt hier beim Lesen des Codes von T4 an, das ist in der Tat etwas für Fortgeschrittene.
Der Teil vorher, also das Eingrenzen auf das Plugin, ist hingegen recht einfach: auf Grundlage der "finalen" Fehlermeldung ist es nicht möglich, das Problem auch nur ansatzweise einzugrenzen, also muss man sich hier zusätzliche Infos besorgen und der Debug Mode ist da immer die erste Anlaufstelle. Alles andere ("check mal XYZ", "kontrollier mal ABC") ist nichts anderes als rumraten und somit wenig zielführend
-
Der Code-Block sieht für mich aus als hätte jemand bei JoomlArt da vor dem letzten Update dran gearbeitet, halbfertigen Code hinterlassen und dann ist der Kram so veröffentlicht worden. Denn dort ist auskommentierter "richtiger" Code, der genau diese Check (ist das gespeicherte Template ein T4 Template?!) gemacht hätte.