Mailinglisten-Archive |
Hallo,
> ----------
> Von: Thomas Speck[SMTP:speck_(at)_zfw.uni-hildesheim.de]
>
> Ab und zu (ungefaehr alle 10 Eintraege in die Datenbank) schluckt
> irgendetwas Daten. Das Problem tritt bei einer Kombination eine
> (HTML) textarea mit einer (MySQL) text Spalte auf. Die Benutzer
> des Formulars sollen im Anmeldeformular (in diesem Fall für die
> Vortraege) eine Kurzfassung ihres Vortrags eingeben.
> Dummerweise ist (wie erwaehnt bei ca. jedem 10. Eintrag) der
> Eintrag in der Abstract Spalte unvollstaendig (nur 1 Zeile, beendet
> mit einem "\" ).
>
....
> Das wird dann in einer PHP Datei nochmal angezeigt, damit die
> Benutzer sicherstellen koennen, das ihre Angaben auch stimmen
> und gleichzeitig als verstecktes Formularfeld an das naechste PHP-
> Skript uebergeben:
> <input type="hidden" name="abstract" value="<? echo $abstract; ?>">
> <? echo $abstract; ?>
>
...
> $result = mysql_query("insert into abstracts (..., abstract, ...)
> values ( ... "', '".$abstract."', '" ...)", $link);
>
2 Gravierende Probleme habt ihr hierbei:
- Wenn im Abstract Anführungszeichen stehen ("), dann funktioniert die
Weitergabe über das versteckte Formularfeld nicht mehr, da ja hier das
Anführungszeichen die Begrenzung ist.
Schnelle Lösung: Die Daten einfach noch mal in einer Textarea anzeigen.
Saubere Lösung: Vorher alle Anführungszeichen durch was anderes er-
setzen, hinterher wieder zurück.
- Wenn im Abstract Hochkommas (') stehen, dann funktioniert das Speichern
in der Datenbank nicht, da hier das Hochkomma für das Ende des Feldes bei
values (...., '$abstrat',... ) steht.
Saubere und schnelle Lösung:
vor speichern in DB : $abstract = addslashes($abstract) ### kann man sich
# sparen, wenn magic quotes runtime
auf on sind
hinterher beim auslesen :
$abstract = stripslashes($abstract)
Viele Grüße, Mathias
---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive