FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: HomeAuto_User am 10 August 2019, 13:05:16

Titel: 01_FHEMWEB.pm - & Zeichenreferenz (nur im Quelltext sichtbar) - Diskussion
Beitrag von: HomeAuto_User am 10 August 2019, 13:05:16
Hallo,

ich habe mich mal beim Debuggen durchgeforstet und bin durch Zufall auf einen Hinweis im Quelltext gestoßen.
Sichtbar ist dieser nur wenn die Syntax Hervorhebung aktiv ist. (Im Bild zu sehen)

"&" startete keine Zeichenreferenz. ("&" sollte warscheinlich als "&" kodiert sein.)

Wenn man im Modul 01_FHEMWEB.pm nun folgendes fixt, so ist es richtig aufgelöst. (Zeile 518)
(Ausgehend von der Version # $Id: 01_FHEMWEB.pm 19904 2019-07-28 08:53:49Z rudolfkoenig $ )

IST
  $FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
                "&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");


ändern in
  $FW_CSRF = (defined($defs{$FW_wname}{CSRFTOKEN}) ?
                "&fwcsrf=".$defs{$FW_wname}{CSRFTOKEN} : "");


somit ist der Hinweis weg. Getestet wurde das ganze mit dem Firefox v68.0.1

MfG


EDIT:
Zusätzlich ist der selbe Fehler in Zeile 1664.

"$FW_ME/FileLog_logWrapper?dev=$lfn&type=text&file=$fn");
durch
"$FW_ME/FileLog_logWrapper?dev=$lfn&type=text&file=$fn");
ersetzen
Titel: Antw:01_FHEMWEB.pm - Schönheitsfehler Fix (nur im Quelltext sichtbar) & Zeichenref
Beitrag von: Otto123 am 10 August 2019, 13:21:22
Nach meinem Wissen wird dort die Variable $FW_CSRF befüllt. Die enthält danach die Zeichenkette in der Form &fwcsrf=csrf_387849633005507, die dann für die Verwendung des csrf Tokens an jeden Befehl in der url angehängt wird.
Ich befürchte nach dem "Fix" funktioniert nix mehr.  ::)

Aber ich bin da kein Spezi :)

Edit: Ich habe ähnliche Erfahrungen mit https://www.shellcheck.net/ gemacht. Wenn man die dortigen empfohlenen "Code Richtigstellungen" alle einarbeitet, funktioniert anschließend nichts mehr.

Gruß Otto
Titel: Antw:01_FHEMWEB.pm - Schönheitsfehler Fix (nur im Quelltext sichtbar) & Zeichenref
Beitrag von: HomeAuto_User am 10 August 2019, 13:27:15
Grüße in die selbe Stadt :-)

@Otto, du hast es richtig widerlegt was dort passier aber das & wird durch die Zeichen & "ersetz" siehe https://wiki.selfhtml.org/wiki/Referenz:HTML/Zeichenreferenz.
Wir könnten es auch Kompatiblität nennen. Ich selbst hatte soche Fehler auch schon mit anderen Zeichen oder Umlauten welche fehlerhaft dargestellt werden. Wenn man diese "uns normale Schreibweise" anpasst in die kompatible, so sind die Zeichen für uns auch wieder "richtig". Es liegt ja der Zeichensatz.

Eine NICHTFUNKTION konnte ich nicht bestätigen.

Edit: Aufgrund das ja der Zeichensatz und mehre Programmiersprachen hier zum tragen kommen, je nach Umsetzung und Zusammenspiel, kann glaube nur Rudolf direkt selbst mal schauen und es bewerten. Ich selbst hatte an anderere Stelle nur das Beispiel gehabt, das nichts ging mit der normalen Schreibweise und mit Änderung bzw. Anpassung ging es.

Es kann ja auch nun wieder nur sein, das der eine Browser das falsch interprätiert und / oder eine andere Software nicht. Sowas ist bei der "Code übergreifenden Programmierung" immer buggi.
Titel: Antw:01_FHEMWEB.pm - Schönheitsfehler Fix (nur im Quelltext sichtbar) & Zeichenref
Beitrag von: Otto123 am 10 August 2019, 13:42:36
Da das & Zeichen (so wie es ist, also nicht "encoded") in urls aber sehr häufig auftritt, ist es nicht eine Art Trenner/Einleiter für Parameter/Variablen? Also so hatte ich das an der Stelle immer verstanden.  ???

Ich rede da ziemlich unwissend daher, will es aber gerne verstehen :)
Ist es nicht so, das an der Stelle die URL "vorbereitet" wird? Und da gilt doch URL Encoding, da wird das Leerzeichen ja z.B. als %20 kodiert. https://de.wikipedia.org/wiki/URL-Encoding und das & hat eine besondere Bedeutung.
Was Dir da angezeigt wird ist doch html Encoding? Das passiert doch bestenfalls in irgendeinem Prozess "danach"? Und da wird doch dann das Leerzeichen als   dargestellt.

Am Ende ist es für die Funktion "egal" an welcher Stelle es umkodiert wird?
Titel: Antw:01_FHEMWEB.pm - Schönheitsfehler Fix (nur im Quelltext sichtbar) & Zeichenref
Beitrag von: rudolfkoenig am 10 August 2019, 15:07:01
Das & wird verwendet, um im URL (die Eingabezeile oben im Browser) Parameter voneinander zu trennen: room=Kueche&fwcsrf=XXX
Wenn man im Wert ein & unterbringen moechte, dann schreibt man %26: room=Kueche%26Bad fuer Kueche&Bad

& hat auch im HTML eine Sonderbedeutung: es leitet spezielle Sequenzen ein, wie &auml fuer ä usw.
Damit man & im HTML verwenden kann, schreibt man es als & also Kueche&Bad.

Ich bin z.Zt. der Ansicht, dass so wie es in FHEMWEB verwendet ist, richtig ist, da Zeile 518 und 1664 bereiten ein URL vor.
Titel: Antw:01_FHEMWEB.pm - Schönheitsfehler Fix (nur im Quelltext sichtbar) & Zeichenref
Beitrag von: HomeAuto_User am 10 August 2019, 22:20:47
Solange die Funktion gegeben ist und wir es so belassen, dann sehen wir das Ganze als Anregung einer Diskussion :-)