Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Problem HTML-Sonderzeichen in categories_meta_description mit CAO-Faktura

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Hallo zusammen,

    ich habe bei meinem Shop v2.0.3.0 rev 10907 (utf-8) und CAO-Faktura das Problem wenn ich ein HTML-Sonderzeichen zur MetaDescription der Kategorie übertrage werden diese nicht oder falsch dargestellt.
    Wenn ich es manuell in die Datenbank des Shops eintrage ist alles oK.

    In der cao_xtc_functions.php ist diese Zeile für die Übertragung zuständig.
    Code: PHP  [Auswählen]
          $schema .= "<META_DESCRIPTION>" . encode_htmlspecialchars($details["categories_meta_description"]) . "</META_DESCRIPTION>" . "\n";

    In Artikeln, Content usw. gibt es das Problem nicht.

    Hat jemand einen Tipp oder eine Lösungsmöglichkeit für mich?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=39651.0
    Werbung / Banner buchen

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Versuch es mal mit diesem Code.

    Code: PHP  [Auswählen]
          $schema .= "<META_DESCRIPTION>" . html_entity_decode($details["categories_meta_description"]) . "</META_DESCRIPTION>" . "\n";
     

    Gruss
    Hanspeter

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Hallo Hanspeter,

    keine Änderung, immer noch Fehler.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Nachtrag:

    Ein solche Funktion encode_htmlspecialchars() gibt es in PHP gar nicht, nur eine solche htmlspecialchars_decode().

    Eigentlich müsste dein Skript mit einem Fatal Error abbrechen.

    Gruss
    Hanspeter

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Es erzeugt ein xml-File zur Übertragung

    Code: PHP  [Auswählen]
    function SendCategories ()
    {
      if (defined('SET_TIME_LIMIT')) { @set_time_limit(0);}

      $schema = '<?xml version="1.0" encoding="' . CHARSET . '"?>' . "\n" .
                '<CATEGORIES>' . "\n";

      echo $schema;
     

    Auch die richtig übertragenden Zeilen für Produkte sind mit encode_htmlspecialchars() versehen
    Code: PHP  [Auswählen]
            $schema .=  "<META_DESCRIPTION>" . encode_htmlspecialchars($details["products_meta_description"]) . "</META_DESCRIPTION>" . "\n";

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Ok, dann ist  die Funktion encode_htmlspecialchars() wahrscheinlich eine speziell programmierte, also keine vordefinierte Funktion.

    Jetzt müsste man mal im übertragenen XML-Dokument die entsprechende Stelle ansehen, möglicherweise stimmt der Charset nicht, aber ich muss ehrlich sagen mit CAO-Faktura und seinem Connector kenne ich mich nicht aus.

    Gruss
    Hanspeter

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Dir erst mal vielen Dank, ich werde morgen mal weiter testen.

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Nach einigen Tests habe ich festgestellt das HTML zB. &bull; richtig übertragen wird aber Unicode &#8226; für das selbe Zeichen nicht.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    [...] aber Unicode &#8226; für das selbe Zeichen nicht.

    Die Ursache dafür könnte an folgender Funktion in der Datei includes/classes/class.inputfilter.php liegen.

    Code: PHP  [Auswählen]
        /**
          * Try to convert to plaintext
          * @access protected
          * @param String $source
          * @return String $source
          */

        function decode($source='') {
            if ($source!='') {
          // url decode
          $source = decode_htmlentities($source, ENT_QUOTES);
          // convert decimal
          $source = preg_replace_callback(
            '/&#(\d+);/m',
            create_function (
              '$m',
              'return chr($m[1]);'
            ),
            $source
          );
     

    Vorschlag: Ersetze mal testweise in der Datei /includes/application_top_export.php folgende Codezeile

    Code: PHP  [Auswählen]
    $_POST = $InputFilter->process($_POST);

    mit dieser  Codezeile.

    Code: PHP  [Auswählen]
    if (basename($_SERVER['PHP_SELF']) != 'cao_xtc.php') $_POST = $InputFilter->process($_POST);

    Gruss
    Hanspeter

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Guten Abend Hanspeter,

    ich werde es morgen mal testen wenn ich wieder im Büro bin.

    Schon mal vielen Dank für deine Hilfe!

    HaldOn

    • Fördermitglied
    • Beiträge: 552
    Hallo Hanspeter,

    das hatte ich vor längerem mal geändert nach dem Beitrag https://www.modified-shop.org/forum/index.php?topic=37012.msg336483#msg336483.

    Daher funktioniert es leider noch nicht bei den Kategorien.
    3 Antworten
    2583 Aufrufe
    20. März 2018, 14:31:41 von Brunbaur-EDV
    5 Antworten
    4357 Aufrufe
    11. Oktober 2011, 15:13:26 von Lupsch
               
    anything