Page 1 of 1

FrontEndUser und Sonderzeichen

Posted: Mon Aug 04, 2008 5:45 pm
by sw
Hallo,

ich habe hier ein Problem mit dem Modul FrontEndUsers und Sonderzeichen.

Bearbeitet ein FEU seine Daten (Template für Einstellungen ändern), werden alle Sonderzeichen als Entitäten codiert (aus " wird ") in der Datenbank abgespeichert. Auf der Website werden diese Daten jetzt korrekt dargestellt.

Sobald der FEU das Formular "Template für Einstellungen ändern" erneut aufruft, werden die Sonderzeichen jedoch nicht decodiert, sondern als Entität im Textfeld dargestellt. Speichert man das Formular ohne Änderungen ab wird dann aus &qout; &ampquot; da das & der Entität als Sonderzeichen erkannt und konvertiert wird.

Habe ich da irgendwo etwas falsch eingestellt?

Ich verwende CMSMS 1.3, FEU 1.4.2, PHP 5.2.6, MySQL 5 mit utf8_general_ci

Vielen Dank & Grüße

sw

Re: FrontEndUser und Sonderzeichen

Posted: Mon Aug 04, 2008 8:04 pm
by NaN
Sieht mir eher nach einem Fehler im Code aus.

Re: FrontEndUser und Sonderzeichen

Posted: Tue Aug 05, 2008 11:17 am
by sw
Danke, dann werde ich mal suchen.

Re: FrontEndUser und Sonderzeichen

Posted: Tue Aug 05, 2008 12:33 pm
by NaN
sw wrote: Danke, dann werde ich mal suchen.
Der Inhalt der Inputfelder wird aus Sicherheitsgründen in Entitäten umgewandelt.
Dazu wird aber nicht nur die php Funktion htmlentities() oder htmlspecialchars() verwendet, sondern eine eigene Funktion der API.
Die da heißt cms_htmlentities().
Diese Funktion wird immer aufgerufen, wenn man z.B. ein Inputfeld mit der API Funktion CreateInputText() erstellt.
(Alle Parameter, die an diese Funktion übergeben werden, werden erstmal umgewandelt)
D.h. wenn man einem Inputfeld ein bereits in Entitäten umgewandelten Wert vorgeben will, wird dieser automatisch erneut umgewandelt.
Man müsste, bevor man diese CreateInputText() Funtion aufruft, den Wert wieder in "Nicht-Entitäten" umwandeln.

Also z.B. so:

($description sei jetzt mal der Wert für das Textfeld, der bereits Entitäten beinhalten könnte)


$mod = get_html_translation_table ( HTML_SPECIALCHARS, ENT_QUOTES );
$mod = array_flip ( $mod );
foreach($mod as $k=>$v)
{
$description = str_replace('&#0','&#',$description);
$description = str_replace($k,$v,$description);
}
$this->smarty->assign('description_input', $this->CreateTextArea(false, $id, $description, 'description','','','','',32,2));


So habe ich es mal in einem Modul gemacht.

Re: FrontEndUser und Sonderzeichen

Posted: Tue Aug 05, 2008 3:22 pm
by sw
Danke, das werde ich mal ausprobieren.