FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: Ralli am 05 März 2023, 11:43:32

Titel: Das Plus-Zeichen wird bei einem at-defmod nicht mit übergeben
Beitrag von: Ralli am 05 März 2023, 11:43:32
Guten Morgen,

ich möchte über einen Link im Standard-Webfrontend ein bzw. zwei Kommando(s) ausführen. Der Link wird wie folgt zusammengebaut:


my $callMe='<a href="/fhem?cmd=set '.$name;
if($state eq 'disabled') {
$callMe .=' enable ';
$cmd =$callMe.'">Enable</a>';
} else {
$callMe .=' disable ;defmod at_AdGuard_enable at +00:';
$cmd  =       $callMe.'01:00 set '.$name.' enable">1</a>';


Daraus wird richtigerweise


<a href="/fhem?cmd=set adguard disable ;defmod at_AdGuard_enable at +00:01:00 set adguard enable">1</a>


laut Seitenquelltext generiert. Rufe ich diesen Link nun auf, wird das Plus-Zeichen allerdings verschluckt und in der Folge kein relatives at sondern ein absolutes at angelegt.

Was mache ich falsch?
Titel: Antw:Das Plus-Zeichen wird bei einem at-defmod nicht mit übergeben
Beitrag von: rudolfkoenig am 05 März 2023, 11:51:35
Url-Encoding der Zeile fehlt.
Titel: Antw:Das Plus-Zeichen wird bei einem at-defmod nicht mit übergeben
Beitrag von: betateilchen am 05 März 2023, 12:05:38
Ich würde versuchen, das "+" durch "+" zu ersetzen und testen, ob das schon ausreicht.

Hat eigentlich das Leerzeichen in "disable ;defmod" irgendeine Bedeutung? Das mag zwar funktionieren, sieht aber unüblich aus.
Titel: Antw:Das Plus-Zeichen wird bei einem at-defmod nicht mit übergeben
Beitrag von: Ralli am 05 März 2023, 12:07:44
Danke, mit dem Hinweis hat es ausgereicht, die Zeile


$callMe .=' disable ;defmod at_AdGuard_enable at +00:';


durch


$callMe .= urlEncode(' disable ;defmod at_AdGuard_enable at +00:');



zu ersetzen.

@Betateilchen:
Zitat
Ich würde versuchen, das "+" durch "+" zu ersetzen und testen, ob das schon ausreicht.
Das hatte ich probiert, es hatte nicht gereicht/geholfen. Nein, das Leerzeichen ist ein Überbleibsel.
Titel: Antw:Das Plus-Zeichen wird bei einem at-defmod nicht mit übergeben
Beitrag von: xenos1984 am 05 März 2023, 13:20:21
Zitat von: betateilchen am 05 März 2023, 12:05:38
Ich würde versuchen, das "+" durch "+" zu ersetzen und testen, ob das schon ausreicht.

"+" ist HTML Encoding. URL Encoding ist "%2B".