Om nah hoo pez nyeetz, Sven Rautenberg!
Folgendes leistet entsprechend meiner Tests das gewünschte:
Der Nutzer soll mithilfe eines normalen, etwas umfangreichem HTML-Formular Daten speichern können. Das Formular wird grundsätzlich immer ausgeliefert, per display: none; ausgeblendet und mit JS eingeblendet. Für Berechnungen im Formular ist ohnehin JS notwendig, deshalb gibt es keine no-JS-Alternative.
Für einen neuen Datensatz wird ein leeres Formular eingeblendet
<form>
...
<input type="text" name="person">
<label for="notiz">Ihre Bemerkungen:<textarea id="notiz" name="notiz" rows="2"></textarea></label>
...
</form>
Die Eingaben werden in die Datenbank gespeichert.
$abfrage = "INSERT INTO foo (person, notiz) VALUES ('"
. mysql_real_escape_string($_POST['person']) . "', '"
. mysql_real_escape_string($_POST['notiz']) . "')"
Sollte ein schon bestehender Datensatz aufgerufen werden, wird das Formular gefüllt durch
echo "f.person.value = '" . str_replace('&','&',htmlspecialchars(substr(json_encode($gkind['name']),1,-1), ENT_NOQUOTES, $double_encode = false)) . "';\n";
echo "f.notiz.value = '" . str_replace('&','&',htmlspecialchars(substr(json_encode($gkind['notiz']),1,-1), ENT_NOQUOTES, $double_encode = false)) . "';\n";
zum schnelleren Lesen:
1. json_encode
2. die begrenzenden Anführungszeichen entfernen
3. htmlspecialchars
4. & wieder erlauben
Das htmlspecialchars ist erst nach diesem Thread dazugekommen. Ist das hier wirklich notwendig? Jedenfalls kann ich als Person auch </script> eingeben, ohne das das Script abgebrochen wird.
Welche Kontextwechsel könnten noch nicht berücksichtigt sein, welche sonstigen Hinweise sind noch zu geben?
Matthias
1/z ist kein Blatt Papier.
