Änderungen m. mysql_real_escape_string() beim Anz. rückg. machen
pc-world
- php
Der Betreff nochmal ohne Abkürzungen :-): Änderungen mit mysql_real_escape_string() beim Anzeigen rückgängig machen
Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?
Hello,
Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?
was für Änderungen sind das, deiner Meinung nach?
MfG
Rouven
was für Änderungen sind das, deiner Meinung nach?
Z. B. wird ein Apostroph zu "'" (ohne die "").
Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.
Hi,
Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.
setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.
freundliche Grüße
Ingo
setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.
Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.
Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.
[Wenn es euch hilft: Ich bastel gerade an einem Kommentarsystem rum! :-)]
Hallo
setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.
Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.
Jup, recht so.
Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.
Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt. Du hast das offensichtlich noch gar nicht probiert, sonst wäre dir das nicht entgangen. :-)
Tschö, Auge
Hallo
setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.
Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.
Jup, recht so.
Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.
Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt. Du hast das offensichtlich noch gar nicht probiert, sonst wäre dir das nicht entgangen. :-)
Tschö, Auge
Doch, ich hab es ausprobiert.
Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.
Hello,
Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.
ist auf deinem Server vielleicht magic_quotes aktiviert?
MfG
Rouven
Danke an alle!
Ich habe "php_flag magic_quotes_gpc Off" in die Datei ".htaccess" geschrieben, jetzt funktioniert alles wie gewünscht.
Hallo
Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.
Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.
Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt.
Doch, ich hab es ausprobiert.
Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.
hast du phpMyAdmin oder ähnliches zur Verfügung? Wenn ja, sind die Backslashes im Feld mit dem String enthalten? Ist dem so, folge dedlfix' Links. Das _dürfte_ dein Problem erklären und mit den dortigen Angaben könntest du es beheben.
Wenn das _nicht_ hilft, passiert zwischen der Übergabe der Daten und dem Speichern derselben in der DB irgendetwas anderes, was nicht passieren soll. Um das zu ergründen brauchen wir aber den relevanten Quelltext des Skripts zwischen diesen beiden Punkten.
Tschö, Auge
echo $begrüßung;
was für Änderungen sind das, deiner Meinung nach?
Z. B. wird ein Apostroph zu "'" (ohne die "").
Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.
Maskierungen sind eine Art Transportsicherung auf dem Weg zum Datenbanksystem, damit Daten und Anweisungsbestandteile voneinander unterschieden werden können. Aus der Datenbank kommen die Daten in ursprünglicher Form, ohne dass sie in einem SQL-Statementtext eingebettet sind.
Wenn du Daten mit Maskierungen zurückbekommst, hast du nicht genügend Fehlersuche betrieben. Die Daten werden höchstwahrscheinlich bereits maskiert an dein Script geliefert. Grund wäre dann das PHP-Feature namens Magic Quotes. Unter Disabling Magic Quotes steht, wie man die Dinger los wird.
echo "$verabschiedung $name";
Hello,
Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?
Die stehen gar nicht drin in der Datenbank.
Die Maskeierungen sind nur für die Textschnittstelle der Datenbank notwendig und werden von dieser beim Übertragen in den Buffer bereits wieder entfernt bzw. verwinden durch die Interpretation des Textstrings "von alleine".
Wenn Du die Daten aus der DB wieder holst, sind es bereits wieder Rohdaten und müssen dann nur für den jeweiligen Kontext, in dem sie ausgegebn werden sollen, vorbereitet werden, also z.B. mit htmlspecialchars() für die Ausgabe im HTML-Kontext.
Ein harzliches Glückauf
Tom vom Berg