HTML-Fehler bei externen Links in Navigation

Diskussion zum Modul Menu (Automatische Navigation) für ConPresso 4
Antworten
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

HTML-Fehler bei externen Links in Navigation

Beitrag von Mr. Magpie »

Weisen die externen Links bspw. Ampersands (&) auf, führt dies im Zusammenhang mit mod_menu zu unschönen und vermeidbaren HTML-Fehlern.
Um dies zu beheben, habe ich in der Datei navgation.php von mod_menu (RC 1a) folgende Änderungen vorgenommen:

Zeile 114-116 geändert von

Code: Alles auswählen

      if ($nav_external_url[$i] != '')  {
         $nav_link = $nav_external_url[$i];
         $target = ' target="'.$nav_target[$i].'"';
zu

Code: Alles auswählen

      if ($nav_external_url[$i] != '')  {
         $nav_link = htmlspecialchars($nav_external_url[$i]);
         $target = ' target="'.$nav_target[$i].'"';
sowie auf gleiche Weise die Zeilen 192-194
Günther Ludwig
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Du könntest auch mal urlencode() statt htmlspecialchars() probieren, da dies eher für URLs gedacht ist als die Funktion, die du jetzt zur Umwandlung verwendest.

Gruß Matthias
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Dachte ich auch erst und hab' urlencode verwendet. Aber urlencode encoded eben auch die Slashes und evtl. vorhandene ? usw..

Zur Historie: ich wollte in der Navi direkt auf eine Detailseite verlinken und hatte deshalb als "externen URL" folgenden Eintrag:

../_rubric/detail.php?nr=9&rubric=Home&

Der Einsatz an der besagten Stelle in navigation.php von htmlspecialchars() macht daraus korrekt, d.h funktionierend:

../_rubric/detail.php?nr=9&rubric=Home&

urlencode() erzeugt hingegen:

..%2F_rubric%2Fdetail.php%3Fnr%3D9%26rubric%3DHome%26

im Quelltext und sogar letztlich

http://www.domain.tld/_rubric/..%2F_rub ... %3DHome%26

da die relative Adressierung nicht erkannt wird. (Zumindest erklär' ich mir das so)
Günther Ludwig
Antworten