\$ im Text, Problem mit Dollarzeichen im Content

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 5. Okt 2006, 09:40

ähm...

versuch mal folgendes

anstelle von

Code: Alles auswählen

$tmp = urldecode($tmp);
$tmp = str_replace("\$","& #36;",$tmp);
$tmp = str_replace("\\", "\", $tmp);

$tmp = AddSlashes(AddSlashes($tmp));
$tmp = str_replace("\\\'","'",$tmp);
folgendes

Code: Alles auswählen

$tmp = urldecode($tmp);

$tmp = AddSlashes(AddSlashes($tmp));
$tmp = str_replace("\\\'","'",$tmp);

$tmp = str_replace("\$","\\\\\$",$tmp);
oder

Code: Alles auswählen

$tmp = urldecode($tmp);

$tmp = AddSlashes(AddSlashes($tmp));
$tmp = str_replace("\\\'","'",$tmp);

$tmp = str_replace("\$","& #36;",$tmp);
erstere variante find ich besser...

geht beides bei einer 4.6.15 (&[space]# -> leerzeichen entfernen nicht vergessen )
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 6. Okt 2006, 01:23

Danke. Das löst fast alles, nur nicht den Fall \" (also echte Eingabe von \" im Text).

Test-String (Vorsicht, der Artikel ist danach unbrauchbar!):
'Test' "Test" \'Test\' \"Test\" ' " $ \$

(\$ wird zu $, das kann man verschmerzen, oder?)

Aber ich werde Deine erste Variante einbauen, das ist besser, als die Ersetzung mit #36.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 6. Okt 2006, 09:17

noch ne variante (sieht immer schlimmer aus...)

Code: Alles auswählen

$tmp = urldecode($tmp); 

$tmp = AddSlashes(AddSlashes($tmp)); 
$tmp = str_replace("\\\'","'",$tmp); 

$tmp = str_replace("\$","\\\\\$",$tmp);
folgendes

Code: Alles auswählen

$tmp = urldecode($tmp); 

$tmp = AddSlashes(AddSlashes($tmp)); 
$tmp = str_replace("\\\'","'",$tmp); 

if ($edit) {
    $tmp = str_replace("\$","\\\\\\\\\$",$tmp);
    $tmp = str_replace('\\\\\\\"','\\\\\\\\\"',$tmp);
} else {
    $tmp = str_replace("\$","\\\\\$",$tmp);
}
da gibts irgendwo ein addslashes oder stripslashes an einer falschen position...
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 6. Okt 2006, 09:42

okay ich habs...

neuer con_type

CMS_HTML

Code: Alles auswählen

/**
 * CMS_HTML
 */
$tmp = $a_content['CMS_HTML'][$val];
$tmp = urldecode($tmp);

$tmp = AddSlashes(AddSlashes($tmp));
$tmp = str_replace("\\\'","'",$tmp);
$tmp = str_replace("\$",'\\\$',$tmp);

cInclude("includes", "functions.lang.php");
cInclude("classes", "class.htmlelements.php");

if ($edit) {
    if ($tmp == "") {
        $tmp = " ";
    }
    $insiteEditingDIV = new cHTMLDiv;
    $insiteEditingDIV->setId("HTML_".$db->f("idtype")."_".$val);
    $insiteEditingDIV->setEvent("Focus", "this.style.border='1px solid #bb5577';");
    $insiteEditingDIV->setEvent("Blur", "this.style.border='1px dashed #bfbfbf';");
    $insiteEditingDIV->setStyleDefinition("border", "1px dashed #bfbfbf");
    $insiteEditingDIV->setStyleDefinition("direction", langGetTextDirection($lang));
    
    $insiteEditingDIV->updateAttributes(array("contentEditable" => "true"));
    
    $insiteEditingDIV->setContent("_REPLACEMENT_");
    

    /* Edit anchor and image */
    $editLink = $sess->url("front_content.php?action=10&idcat=$idcat&idart=$idart&idartlang=$idartlang&type=CMS_HTML&typenr=$val");
    $editAnchor = new cHTMLLink;
    $editAnchor->setLink("javascript:setcontent('$idartlang','" . $editLink . "');");
    
    $editButton = new cHTMLImage;
    $editButton->setSrc($cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_edithtml.gif");
    $editButton->setBorder(0);
    $editButton->setStyleDefinition("margin-right", "2px");
        
    $editAnchor->setContent($editButton);
    
    
    /* Save anchor and image */
    $saveAnchor = new cHTMLLink;
    $saveAnchor->setLink("javascript:setcontent('$idartlang','0')");
    
    $saveButton = new cHTMLImage;
    $saveButton->setSrc($cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_speichern.gif");
    $saveButton->setBorder(0);
    
    $saveAnchor->setContent($saveButton);

    /* Process for output with echo */
    $finalEditButton = $editAnchor->render();
    $finalEditButton = AddSlashes(AddSlashes($finalEditButton));
    $finalEditButton = str_replace("\\\'","'",$finalEditButton);
    
    $finalEditingDiv = $insiteEditingDIV->render();
    $finalEditingDiv = AddSlashes(AddSlashes($finalEditingDiv));
    $finalEditingDiv = str_replace("\\\'","'",$finalEditingDiv);
    
    $finalEditingDiv = str_replace("_REPLACEMENT_", $tmp, $finalEditingDiv);
    
    $finalSaveButton = $saveAnchor->render();
    $finalSaveButton = AddSlashes(AddSlashes($finalSaveButton));
    $finalSaveButton = str_replace("\\\'","'",$finalSaveButton);
    
    $tmp =  $finalEditingDiv . $finalEditButton . $finalSaveButton;
    
   
}
für CMS_HTMLHEAD

CMS_HTML durch CMS_HTMLHEAD , einmal "HTML_" durch "HTMLHEAD_" und but_edithtml.gif durch but_edithead.gif ersetzen... (ansonsten selber code)

und das beispiel
'Test' "Test" \'Test\' \"Test\" ' " $ \$

funktioniert in jeder konstellation...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 8. Okt 2006, 15:39

Wunderbar. Klappt perfekt.

Komplettes Beispiel:

Code: Alles auswählen

1234567890
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
^°!"§$%&/()=?`´
<>,.-;:_+#*'
²³{[]}\@€µ|~
'Test' "Test" ' " \'Test\' \' \"Test\" \"
<!-- Test //-->
<script type="text/javascript">
alert("Yo 'Man'!");
alert('Yo \'Man\'!');
alert("Yo \"Man\"!");
alert('Yo "Man"!');
</script>
Standard-JS-Intro-Kommentare funktionieren im Prinzip auch, da aber der tinyMCE die Zeilenumbrüche entfernt, wird auch der JS-Code auskommentiert:

Code: Alles auswählen

<script type="text/javascript"><!-- alert("Yo won't see me"); //--></script>
Ich baue es ein, kommt ins Release.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt