Forum: PC-Programmierung formatierung bevor in der datenbank geschrieben wird


von emi (Gast)


Angehängte Dateien:

Lesenswert?

habe folgendes zugriffsscript auf db:
1
$inhalt = mysqli_real_escape_string($verbindung, $inhalt);
2
        $datum = mysqli_real_escape_string($verbindung, $datum);
3
        $autor = mysqli_real_escape_string($verbindung, $autor);
4
5
        $query = "INSERT INTO mathe_beitraege(inhalt, datum, id_thema, autor)
6
                                VALUES('$inhalt','$datum','$id_thema','$autor')";

jedoch wenn ich irgendwelche Leerzeichen oder Zeilenumbrüche in die 
textarea hineinschreib welche komplett und unverändert in der Variable 
$inhalt gespeichert ist mit der REQUEST Methode, dann wird in der 
datenbank das im bild gespeichert was zunächst einmal richtig ausschaut 
(bild1). Jedoch wenn ich doppelklicke auf das felld dann kommt bild 2. 
Und das schaut nicht mehr richtig aus.

Jedenfalls wenn ich die daten wieder auslese und mittels echo in ein <p> 
schreibe dann wird maximal 1 leerzeichen angezeigt.

Also habe ich versucht:

$inhalt = nl2br(mysqli_real_escape_string($verbindung, $inhalt));

da passiert aber das selbe..

was mache ich falsch??

von Peter II (Gast)


Lesenswert?

emi schrieb:
> was mache ich falsch??

versucht mal mit Prepared Statement. Ist auch sicherer.

http://www.php.net/manual/de/mysqli.prepare.php

von Daniel A. (daniel-a)


Lesenswert?

emi schrieb:

> (bild1). Jedoch wenn ich doppelklicke auf das felld dann kommt bild 2.
> Und das schaut nicht mehr richtig aus.

Welches feld? Wass passiert dann? Wird die Seite neu geladen oder ist 
das problem auf der Client-seite?

> Jedenfalls wenn ich die daten wieder auslese und mittels echo in ein <p>
> schreibe dann wird maximal 1 leerzeichen angezeigt.
>
Könnte ein Clientseitiges problem sein. Ist die css option white-space 
auf pre gesetzt?
>
> $inhalt = nl2br(mysqli_real_escape_string($verbindung, $inhalt));
>
Wenn es ein serverseitiges problem ist, kann ich nicht sagen wo. 
Vileicht könte man das problem dann aber mit base64_encode und 
base64_decode lösen. Die Daten einfach in base64 in der Datenbank 
speichern...
>
> was mache ich falsch??

Keine ahnung.

von emi (Gast)


Lesenswert?

emi schrieb:
> $inhalt = nl2br(mysqli_real_escape_string($verbindung, $inhalt));

Das hier funktioniert jetzt nicht, aber ich habe jetzt das hier 
probiert:

$text = mysqli_real_escape_string($verbindung,nl2br($text));

und jetzt haut es hin!!

Bleibt nur noch das Problem dass html tags korrekt ausgeführt werden. 
Gibt es eine Funktion die alle Html tags so formatiert, dass sie auch 
wirklich textuell ausgegeben werden? Sprich das real escape macht dass 
die anführungszeichen escaped werden. Und ich suche eine funktion die 
irgendetwas vor html tags schreibt, damit sie vom browser nicht 
interpretiert werden..

danke schonmal im Voruas!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.