Probleme mit " und ' in Produktnamen

  • Hallo,
    ich stehe vor einem Problem, das wahrscheinlich wenige User haben, für mich aber elementar ist.
    Wir haben viele Produkte und Produktvarianten, die ein " oder ' im Namen haben (Zeichen für inch, 2x' um Probleme mit Feldtrennern in .csv-Dateien zu vermeiden).
    Hier ein Beispiel: https://www.smile-dental.de/in…rtuemart_product_id=11305
    Zur Erläuterung: Zahn 11 T12°/A5° oder ähnliches ist NICHT der Name der Variante, sondern die Kurzbeschreibung, der Name der Variante, der im Lieferschein auftaucht ist etwas wie "QC SL Keramik Mini Bracket ''Invention'' Roth* .018'' Zahn 15 mit Haken", zu sehen, wenn man eine Variante in den Warenkorb legt.
    Bis jetzt (VM 2.6.12) alles kein Problem.
    Im neuen VirtueMart 2.9.9.2 kann ich jetzt Produkte anlegen, wie zB. QC SL smile Bracket MBT .022" und Speichern/Schließen, dann ist erstmal alles ok. Beim nächsten Öffnen wird aus QC SL smile Bracket MBT .022" aber ein QC SL smile Bracket MBT .022\', was an sich schon nicht gut ist, sich aber noch durch einen manuellen Eingriff beheben ließe.
    Perfide ist aber, das alle angelegten Produktvarianten dann ebenfalls \' statt des " im Namen tragen, was bei der Vielzahl der Produkte und ihrer Varianten (bis zu 32 pro Produkt, siehe obigen Link) unmöglich zu handeln ist.
    Ich hoffe, das
    1. es mir gelungen ist, das Problem zu erklären.
    Und
    2. das jemand eine Idee hat, wie das Problem zu lösen ist.
    Oder
    3. das Ganze nur ein Bug ist, der schnell gefixt wird.



    Mir ist übrigens die Funktion htmlspecialchars bekannt, die sollte in der Standardeinstellung (ENT_COMPAT | ENT_HTML401) aber wenigstens einfache Anführungszeichen in Frieden lassen, wie es scheinbar in VM 2.6 der Fall ist




    Grüße
    badbutshy

  • Habe dann heute morgen direkt mal vm 2.9.9.3 frisch installiert und festgestellt, das der Fehler nur teilweise behoben ist.
    Habe ein Produkt angelegt: QC SL smile Bracket MBT .022''. Alles wunderbar. Produkt lässt sich bearbeiten und abspeichern. '' bleibt erhalten. Soweit, so gut.
    Wenn ich dann Produktvarianten anlege (QC SL smile Bracket MBT .022'' Zahn 11/QC SL smile Bracket MBT .022'' Zahn 21, usw.) sieht es immer noch gut aus.
    Aber sobald ich das Elternprodukt bearbeite und erneut abspeichere, sind wieder alle Produktvarianten zerschossen wie vorher, lediglich das Elternprodukt ist in Ordnung.
    Schade

  • ahja, hmm das macht Sinn, gute Beobachtung. Danke.


    Der Grund ist das wir restriktiv arbeiten. Jeder Input wird erstmal so gefiltert, das er an sich harmlos ist. Ein Plust wird ein Kreuz, sieht alles gleich aus, aber kann nix mehr.


    Für Ausnahmen testen wir auf die Berechtigung und dann müssen wir die Daten mit einem weniger restriktiven Filter neu einlesen. Dabei habe ich die Produktnamen der Kinder übersehen. Schneller gefixed, als die Erklärung geschrieben, lol.

  • Hallo, heute morgen erstmal gefreut und flugs VirtueMart 2.9.9.4 installiert, in der Hoffnung, das "Dabei habe ich die Produktnamen der Kinder übersehen. Schneller gefixed, als die Erklärung geschrieben, lol" gemacht wurde. Leider musste ich feststellen, das das Problem immer noch da ist. Ist extrem blöd für mich, weil ich bei jeder Änderung sämtliche Produktvariantennamen zerschiesse und deshalb im Grunde gar nichts machen kann. Wann wird das denn gefixt?

  • guck ma /administrator/components/com_virtuemart/controllers/products.php


    Da müsste Zeile 70 rum, das hier stehen


    if(isset($data['childs'])){
    foreach($data['childs'] as $k=>$v){
    $data['childs'][$k]['product_name'] = vRequest::get('product_name','',FILTER_UNSAFE_RAW,FILTER_FLAG_NO_ENCODE,$data['childs'][$k]);
    //vmdebug('Store product my ',$data['childs'][$k]['product_name']);
    }
    }


    Die vorherige Lösung funktionierte leider nicht.

  • Ganz ehrlich, das ist mir nicht wirklich verständlich. Hab´jetzt einfach mal das oben angegebene gelöscht und das Problem existiert weiter. da muss es doch eine Lösung geben. Es werden bestimmt auch andere Leute inchangaben oder ähnliches in ihren Produktnamen haben (im englischen Forum taucht das Problem auch auf) und im "alten" VM existierte das Problem gar nicht

  • wenn ich aber "FILTER_UNSAFE_RAW," rauslösche ernte ich zwar Fehlermeldungen:
    vmError: VmTable #__virtuemart_products_de_de Check not passed. Neither slug nor obligatory value at product_name for auto slug creation is given 2
    vmError: You are not an administrator or the correct vendor, storing of product cancelled
    , aber es funktioniert augenscheinlich korrekt. Nur das kann ja nicht der Sinn der Sache sein


  • Da müsste Zeile 70 rum, das hier stehen


    Hab´jetzt einfach mal das oben angegebene gelöscht und das Problem existiert weiter.


    Lies das nochmal durch.



    da muss es doch eine Lösung geben.


    Nein es gibt keine Lösung, ich schreibe hier um dich zu ärgern.



    Es werden bestimmt auch andere Leute inchangaben


    Niemand. du bist ein ganz exotischer Fall.


    "alten" VM existierte das Problem gar nicht



    Der Grund ist das wir restriktiv arbeiten. Jeder Input wird erstmal so gefiltert, das er an sich harmlos ist. Ein Plust wird ein Kreuz, sieht alles gleich aus, aber kann nix mehr.


    Wenn man schreibt und der andere das nicht zur Kenntnis nimmt, das schmerzt. Da kommt keine Freude auf.

  • wenn ich aber "FILTER_UNSAFE_RAW," rauslösche ernte ich zwar Fehlermeldungen:
    vmError: VmTable #__virtuemart_products_de_de Check not passed. Neither slug nor obligatory value at product_name for auto slug creation is given 2
    vmError: You are not an administrator or the correct vendor, storing of product cancelled
    , aber es funktioniert augenscheinlich korrekt. Nur das kann ja nicht der Sinn der Sache sein


    Was meinst du mit Rauslöschen? Also ich habs eben bei mir getested, funktioniert. bin aber darauf reingefallen, dass das Product noch eine "child variant" drin hatte. Wenn eine Child variant als custom activ ist und man hat als Dropdown die Produktnamen gewählt, dann wird, was im child tab ist überschrieben.