php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.08.2005, 13:42  
Gast
 
Beiträge: n/a
Standard [Erledigt] Eingaben richtig in Datenbank speichern & auslesen

Es gibt ja eine Reihe von PHP-Funktionen um Formulareingaben vor dem Speichern und vor dem Auslesen einer Datenbank zu formatieren.

Meine Frage nun:
Welche könnt ihr mir empfehlen und in welcher Reihenfolge?

Momentan mache ich es wie folgt:

Einlesen:
Code:
$eintrag=mysql_real_escape_string(htmlentities(trim(stripslashes($_POST['message']))));
Ausgeben:
Code:
$eintrag=nl2br(smileys(htmlspecialchars($Daten['message'])));
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.08.2005, 14:56  
Gast
 
Beiträge: n/a
Standard

Und was hast Du Dir dabei gedacht?
Versuch doch einfach mal zu erklären, was da warum passiert und Du kommst schon ein gutes Stück weiter.

Ich persönlich mag z.B. die Vermischung von mysql_real_escape_string/htmlentities beim Eintragen nicht. Die Abfrage kann durch bestimmte Zeichen gestört werden; um diese kümmert sich mysql_real_escape_string. htmlentities() hingegen kümmert sich um Zeichen, die erst bei der Ausgabe und nur wenn es sich um html handelt, stören können. Das sind zwei unterschiedliche Schichten, die ich ungerne vermische.
Bei der Ausgabe läßt Du eh schon htmspecialchars() sich um die für html-Ausgaben störenden Zeichen kümmern.
Das stripslashes() halt ich sogar für falsch. Welche slashes müssen denn Deiner Meinung nach entfernt werden?
  Mit Zitat antworten
Alt 04.08.2005, 15:18  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Das stripslashes() halt ich sogar für falsch. Welche slashes müssen denn Deiner Meinung nach entfernt werden?
sollte kein magic_quotes aktiviert sein, kann das die eingabe durchaus verfälschen !
robo47 ist offline   Mit Zitat antworten
Alt 04.08.2005, 15:22  
Gast
 
Beiträge: n/a
Standard

Ich hab eigentlich 5 Ziele:
1. Smileys sollen angezeigt werden
2. HTML Code soll ignoriert werden
3. Zeilenumbrüche sollen nicht verloren gehen
4. Sonderzeichen sollen konvertieren werden
5. Leerzeichen am Anfang und Ende sollen entfernt werden

Wenn ich es richtig verstanden haben setzt mysql_real_escape_string vor Zeichen wie ' oder " einen Backslashm so dass der Speichern Vorangang nicht gestört wird. (also beim Einlesen)

htmlentities wandelt Sonderzeichen und Umlaute um sodass sie nachher auf jedem Broswer angezeigt werden können.(entweder ein oder Ausgabe)
--> beim Einlesen vor mysql_real_escape_string
--> bei der Ausgabe nach Stripslashes

htmlspecialchars soll HTML Code ignorieren so dass er nicht angezeigt wird. (also bei der Ausgabe)

nl2br setzt Zeilenbrüche in
um. (bei der Ausgabe, nach htmlspecialchars)


Das stripslashes soll nacher wieder die von mysql_real_escape_string eingefügten Backslashes entfernen. Ok jetzt sehe ich auch dass es völlig fehl am Platze ist.

Code:
$eintrag=mysql_real_escape_string(trim($_POST['message'])));
Code:
$eintrag=smileys(nl2br(htmlspecialchars($Daten['message'])));
So nun weiss ich aber nicht an welcher Stelle ich die eingefügten Slashes entfernen soll und wo ich die Sonderzeichen & Umlaute umwandeln kann.

Schonmal danke für deine Hilfe.
  Mit Zitat antworten
Alt 04.08.2005, 16:33  
Gast
 
Beiträge: n/a
Standard

Kann ich mir also mysql_real_escape_string sparen wenn ich vorher htmlentities benutze?
  Mit Zitat antworten
Alt 04.08.2005, 16:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

sauber speichert man die daten einfach nur mit mysql_real_escape_string, bei der ausgabe kannste dann htmlentites oder was auch immer verwenden, weil man bei einem system immer dran denken sollte dass die daten ja vieleicht nochmal verändert werden sollen.
Datennach möglichkeit in unverändertem zustand speichern. dann kann man bei der weiterverarbeitung immernoch das draus machen was man gerne hat.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 05.08.2005, 12:43  
Erfahrener Benutzer
 
Registriert seit: 01.08.2004
Beiträge: 113
Kofi
Kofi eine Nachricht über ICQ schicken
Standard

Guck dir einfach mal die Definitionen von htmlspecialchars() und htmlentities() an:

Zitat:
Description
string htmlentities ( string string [, int quote_style [, string charset]] )

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
Da brauchst du nur eins von zu benutzen. Zwei fast gleiche Funktionen hintereinander sind nicht sooo toll .

Beide Funktionen haben übrigens imho schon nl2br() integriert, das brauchst du also auch nicht mehr extra machen.

Umlaute werden mit den Funktionen auch umgewandelt. Was das ganze macht, ist einfach Sonderzeichen, die als HTML-Code interpretiert werden in die entsprechenden HTML-Codes umzuwandeln. z.B.:

& in &
< in &lt;
> in &rt;
ä in &auml;
ö in &ouml;

und so weiter

Also:

Einlesen:
Code:
$eintrag=mysql_real_escape_string($_POST['message']);
Ausgeben:
Code:
$eintrag=htmlspecialchars(stripslashes($Daten['message']));
Ob man beim Ausgeben aber noch stripslashes machen muss, bin ich mir nicht sicher.
Kofi ist offline   Mit Zitat antworten
Alt 05.08.2005, 12:43  
Erfahrener Benutzer
 
Registriert seit: 01.08.2004
Beiträge: 113
Kofi
Kofi eine Nachricht über ICQ schicken
Standard

Guck dir einfach mal die Definitionen von htmlspecialchars() und htmlentities() an:

Zitat:
Description
string htmlentities ( string string [, int quote_style [, string charset]] )

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
Da brauchst du nur eins von zu benutzen. Zwei fast gleiche Funktionen hintereinander sind nicht sooo toll .

Beide Funktionen haben übrigens imho schon nl2br() integriert, das brauchst du also auch nicht mehr extra machen.

Umlaute werden mit den Funktionen auch umgewandelt. Was das ganze macht, ist einfach Sonderzeichen, die als HTML-Code interpretiert werden in die entsprechenden HTML-Codes umzuwandeln. z.B.:

& in &amp;
< in &lt;
> in &rt;
ä in &auml;
ö in &ouml;

und so weiter
Kofi ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Datenbank und Ordner auslesen funzt net borsty PHP Tipps 2008 6 03.06.2008 13:56
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
Inhalte in Datenbank speichern Maxi Datenbanken 31 14.09.2007 18:56
Inhalte in einer Datenbank speichern Maxi Datenbanken 5 02.09.2007 21:37
Arraywerte auslesen und in Datenbank geben? c-bass PHP Tipps 2005-2 30 10.08.2005 13:29
Daten aus einer mySQL Datenbank auslesen GSJLink PHP Tipps 2005-2 6 25.07.2005 16:38
[Erledigt] Auslesen und Aktualisieren von einer MYSQL Datenbank PHP Tipps 2005-2 3 05.07.2005 14:39
Mail Adresse aus einer Datenbank auslesen? Stemmi Datenbanken 6 23.04.2005 23:24
Auslesen aus der Datenbank nixdorf PHP Tipps 2005 7 06.02.2005 21:40
auslesen von datenbank und zählen! PHP Tipps 2004-2 4 11.12.2004 20:00
auslesen aus datenbank und sortieren! PHP Tipps 2004-2 15 04.12.2004 15:56
Auslesen von Daten aus einer mysql Datenbank + Editieren vampsoftchef PHP Tipps 2004-2 5 15.11.2004 08:31
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55
Bilder in Datenbank speichern PHP Tipps 2004 11 05.08.2004 10:58
ein feld aus datenbank auslesen ohne while PHP Tipps 2004 6 10.06.2004 15:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/28199-erledigt-eingaben-richtig-datenbank-speichern-auslesen.html, http://www.php.de/datenbanken/28199-eingaben-richtig-datenbank-speichern-amp-auslesen.html, mysql_real_escape_string auslesen, richtig einspeichen, mysql_real_escape_string wieder auslesen, c datenbank speichern, &amp amp ausgabe php, umlaute in db speichern, warum werden backslashes entfernen?! beim speichern in der mysql db, eingabe und auslesen datenbank html, zend framework html in datenbank speichern, php htmlentities sparen, php mysql_real_escape_string \' herausnehmen, html eingabe in datenbank speichern, php string in datenbank speichern, c datenbank auslesen, php strings für eingabe in datenbank formatieren, umlaute vor datenbankeintrag formatieren, mysql_real_escape_string htmlentities umlaute, sonderzeichen vor speichern entfernen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.