PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Escape-Problem



Jana
09-06-2003, 14:27
Ich habe ein kleines Content-Management-System geschrieben.
Als Eingabe habe ich HTML-Code zugelassen.
Leider klappt das Textfeld zusammen, wenn jemand fehlerhaften HTML-Code eingibt.
Nicht abgeschlossene Tabellen ect.



print "
<textarea name='auswahl[]' value='$value' cols='$Breite' rows='$Hoehe'>$value</textarea>
";

Ich habe folgenden Escape vorgenommen (Smarties):


<?php

class EscapeBox {

function smarty_modifier_escape($string, $esc_type = 'html')

{
switch ($esc_type) {

//case 'html':
// return htmlspecialchars($string, ENT_QUOTES);

// case 'htmlall':
// return htmlentities($string, ENT_QUOTES);

case 'url':
return urlencode($string);

case 'quotes':
// escape unescaped single quotes
return preg_replace("%(?<!\\\\)'%", "\\'", $string);

case 'hex':
// escape every character into hex
for ($x=0; $x < strlen($string); $x++) {
$return .= '%' . bin2hex($string[$x]);
}
return $return;

case 'hexentity':
for ($x=0; $x < strlen($string); $x++) {
$return .= '&#x' . bin2hex($string[$x]) . ';';
}
return $return;

case 'javascript':
// escape quotes and backslashes and newlines
return str_replace(array('\\','\'',"\r","\n"), array("\\\\", "\\'",'\r','\r'), $string);

default:
return $string;
}
}
}
?>


Bei PHPmyAdmin passiert das nicht. Ich finde nur nicht heraus, wie die das machen.

Gaert
09-06-2003, 19:35
Hi!

Versuchs mal mit:


echo "<textarea name=\"auswahl[]\" cols=\"$Breite\" rows=\"$Hoehe\">". htmlentities($value) ."</textarea>";

Jana
09-06-2003, 20:43
Danke! :D
Ein Teil des Fehlers ist jetzt weg. Er schreibt jetzt den HTML-Code so fehlerhaft, wie er eingegeben wurde.

Warum allerdings das Textarea-feld zusammenklappt weiß ich noch nicht.

Ich habe drei Textareas untereinander. Je nach Laune klappt eines auf 2 Zeilen und fast keine Spalten zusammen. Meistens das erste.
Der Code ist absolut identisch.
Beim Linux-Browser klappt manchmal das Fenster nach einigen Refresh wieder auf ????
Ich hab ein paar Versuche mit verschiedenen $value Werten gemacht. Das hat aber nichts geholfen.




switch ($field) {
case "id":
print "<td class='lay100b'><input type='hidden' name='auswahl' value='$auswahl'>$value</td>";
break;
case "$Textfeld_1":
print "<td class='lay100b' valign='top'><textarea name='auswahl[]' cols='$Breite_Textfeld_1' rows='$Hoehe_Textfeld_1'>". htmlentities($value) ."";
print "</textarea><br><br></td>";
break;
case "$Textfeld_2":
print "<td class='lay100b' valign='top'><textarea name='auswahl[]' cols='$Breite_Textfeld_2' rows='$Hoehe_Textfeld_2'>". htmlentities($value) ."";
print "</textarea><br><br></td>";
break;
case "$Textfeld_3":
print "<td class='lay100b' valign='top'><textarea name='auswahl[]' cols='$Breite_Textfeld_3' rows='$Hoehe_Textfeld_3'>". htmlentities($value) ."";
print "</textarea><br><br></td>";
break;

}

Individuum
09-06-2003, 21:16
OT:
ist das cms frei? bzw überhaupt schon fertig?
ich suche nämlich immer noch ein gutes welches ich aber auch selbst ein bischen modifiziern kann. kannst ja mal pm schicken, danke

Jana
10-06-2003, 07:24
Unter http://sourceforge.net/softwaremap/trove_list.php?form_cat=243&discrim=243
gibt es jede Menge Content-Management-Syteme.
Es war mir einfach zuviel Arbeit eines herauszusuchen, das meine Bedürfnisse erfüllt.

Mein System ist auf mich zugeschnitten. Etwas für Individualisten.
Wenn mir etwas neues einfällt, das ich gebrauchen könnte, dann bastle ich das Feature einfach dazu. Kenn mich halt aus ??
Bei den Text-Menu-Boxen muß halt noch ein Fehler sein, den ich nicht finde.

Aber ich könnte gut jemand brauchen, der beim Programmieren mithilft.
(MySQL und PHP)

Individuum
10-06-2003, 13:17
Bin auch ein Individualisten wie du an meinem namen sehen kannst.
Hätte evt. Interesse mitzuprogen, bin aber eher der Noob was sachen PHP angeht.

offe
13-06-2003, 14:38
Hallo,

für was brauchst du ein array für die textarea?

Wie wärs wenn du den Textareas (auswahl1, auswahl2 und auswahl3) und dem hiddenfeld (auswahl) verschiedene Namen gibst.

Offe

Jana
13-06-2003, 18:39
Hi,
Danke für die Hilfe.
Es war ein saudummmer Tippfehler bei der Definition der Variablen.
Ich hatte schlicht die 1 bei der Übergabe der Variablen $Breite_Textfeld_1 weggelassen.
Ich brauche den Array schon, da ich in meinem Feld sämtliche Daten über alle
Datensätze hinweg ändere; also die gesamte Tabelle. Außerdem ist die Tabelle beliebig und wird erst durch ein Auswahlfeld vorher bestimmt.
Merci !

Jasper
14-06-2003, 00:16
Original geschrieben von Jana
Aber ich könnte gut jemand brauchen, der beim Programmieren mithilft.
(MySQL und PHP)

vielleicht siehst du dir bei gelegenheit mal

http://wiki.oversite.ru/WackoDownload/InEnglish

an. an dem bastele ich gerade rum. ich erweitere lieber bestehendes zeug, spart zeit

-j

Jana
14-06-2003, 16:53
Danke für den Tipp.
Ich bin hab immer mit den fertigen Systemen Probleme.
Eine Woche hab ich mich damit abgequält das eine oder andere System zu verstehen.
Mein Code ist zwar einfach aber ich hab es in 2 Tagen fertig gehabt.
Ehrlich ich versteh wenig Russisch, ansonsten scheint dein Management-System auf den ersten Blick ganz gut zu sein. Bis ich den Code anderer verstehe kriege ich meist graue Haare.



Aber bringst du auch folgendes hin?
http://lkrtest.bndlg.de/landkreis/landkreis/service/fuehrerscheinklassen.php/
http://lkrtest.bndlg.de/landkreis/landkreis/institutionen/mitglieder.php/

Jasper
14-06-2003, 19:01
Original geschrieben von Jana
Ehrlich ich versteh wenig Russisch, ansonsten scheint dein Management-System auf den ersten Blick ganz gut zu sein. Bis ich den Code anderer verstehe kriege ich meist graue Haare.


geht mir genauso, wackowiki kann aber ratzfatz mit plugins erweitert werden.
ist frickeleinfach.



Aber bringst du auch folgendes hin?
http://lkrtest.bndlg.de/landkreis/landkreis/service/fuehrerscheinklassen.php/
http://lkrtest.bndlg.de/landkreis/landkreis/institutionen/mitglieder.php/

klar, warum nicht? :)

-j