Seite 2 von 2
Verfasst: Do 5. Okt 2006, 09:40
von emergence
ä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 )
Verfasst: Fr 6. Okt 2006, 01:23
von HerrB
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
Verfasst: Fr 6. Okt 2006, 09:17
von emergence
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...
Verfasst: Fr 6. Okt 2006, 09:42
von emergence
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...
Verfasst: So 8. Okt 2006, 15:39
von HerrB
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