Frage

Updated Der Textbereich i in der Form zur Verfügung gestellt haben, nimmt die Benutzereingabe als Strings

String doppelte Anführungszeichen enthält, ist unvollständig in DB eingefügt ..

Ich habe eine Zeichenfolge im Textbereich eingefügt

"Seien Sie nicht zu viel Sorgen um Layout / Design / Textgröße, werden wir oft „Würze“ (d fett, kursiv, Abstand) Ihr Banner für eine bessere Gesamteindruck.

Und wenn ich die Zeichenfolge in DB eingefügt, um die Zeichenfolge get Ende an

Mach dir keine Sorgen zu viel über Layout / Design / Textgröße, werden wir oft

und wird teilweise eingesetzt .. Was soll ich alle einfachen und doppelten Anführungszeichen ermöglichen tun eingefügt werden?

EDIT AUF ANFRAGE

Im Folgenden finden Sie die Abfrage, die ich in der Datenbank mit PHP einfügen bin mit

"Einsatz in products_description (Products_id, products_name, products_logo_name1, products_logo_name2, products_logo_name3, products_description) VALUES ( '“. (Int) $ products_id. " '' Banner_". $ Products_id. " ''". $ _ POST [ 'logoimage1']. "‘, ' "$ _ POST [ 'logoimage2']."', ' "$ _ POST [ 'logoimage3']."', ‚“ .Mysql_real_escape_string ($ _ POST [ 'description']). "')"

Hier mysql_real_escape_string ($ _ POST [ 'description']) nicht doppelte Anführungszeichen zu entkommen und damit Verkürzungen beim Einsetzen, was getan werden sollte?

War es hilfreich?

Lösung

LOL
gelesen hat, nicht ganze Frage, aber ich bin sicher, ich kenne die Antwort

es eingeführt wird, in der Datenbank alles in Ordnung, dann alles in Ordnung abgerufen und geht dann in Feldwert des HTML-Formulars ... ; -)

Nun, ernst.
Sie haben Ihre Daten Schritt für Schritt folgen.
Es gibt einige bösen Codes in Ihrer Anwendung, die einige bösen Dinge macht.
Sie müssen Ihre Daten folgen fließen und überprüfen, in welcher Phase sie verdorben
bekommt Drucken Sie einfach Ihre Daten aus in diesen Schritten:

  • nach Form Empfangen von Daten
  • , bevor sie in Datenbank einfügen
  • nach aus der Datenbank abrufen
  • , bevor sie in Form Druck zurück

Das ist Ihr allgemeiner Fehler: Sie mehrstufiges Verfahren als Einzelschritt nehmen
. Sie sehen Sie Ihren String in Textfeld und die nächste Mal eingesetzt wird man es in diesem Textfeld abgeschnitten zu sehen. Und Sie denken es die Datenbank Problem. Während Sie nicht so sicher sein kann - es gibt viele Schritte, bei denen Datenbank nicht beteiligt ist. Sehen Sie Ihre App nicht als ein fester Block, sondern als mehrstufiger Prozess.

Andere Tipps

Escape the doublequotes innerhalb der Zeichenfolge, etwa so:

$theString = "Hello, i wonder what all these \"quotes\" are doing in here...";

Der Schrägstrich wird der Compiler sagen, die „Bedeutung“ des Folowing double zu ignorieren, und behandeln es wie ein normales Zeichen (Dies ist, was wir „Escaping“).

Überprüfen Sie auch heraus mysql_real_escape_string() bei der Arbeit mit Benutzereingaben (Dies wird alle gefährlichen Elemente in Strings für die Verwendung in einer mySQL-Datenbank automatisch entkommen).

Mit der Funktion mysql_real_escape_string() wenn es kommt von Benutzereingaben.

mysql_real_escape_string () Anrufe MySQLs Bibliotheksfunktion mysql_real_escape_string, die Schrägstriche auf die folgenden Zeichen prepends:. \ X00, \ n \ r, \,‘,", und \ X1a

Diese Funktion muss immer (mit wenigen Ausnahmen) verwendet werden, um Daten sicher zu machen, bevor sie eine Anfrage an MySQL zu senden.

Wie pro @COL Sharpnel des Scouldings: -)

Danke Agauin für mich machen scould mich .. manchmal seine notwendige

i wiederholte den $ _POST [ 'description'] und dies als

angezeigt

Mach dir keine Sorgen zu viel über Layout / Design / Textgröße, werden wir oft

und wenn ich verwenden

htmlspecialchars (strip ($ _ POST [ 'description']))

Es gab mir alle Zeichenfolge

"Seien Sie nicht zu viel Sorgen um Layout / Design / Textgröße, werden wir oft „Würze“ (d fett, kursiv, Abstand) Ihr Banner für eine bessere Gesamteindruck.

> MORAL VON POST: DONT GET OVER CONFIDENT ON Spaghetti-Code

Sie müssen Ihre Angebote entkommen.

Wenn Ihre DB MySQL ist, übergeben Sie alle Ihre Daten durch die mysql_real_escape_string() Funktion, bevor sie an die DB zu speichern.

Wenn Sie dies nicht tun, riskieren Sie wichtige Sicherheitslöcher in Ihrem Code, nicht nur Daten gehen fehlt!

(falls Sie es nicht bereits tun, sollten Sie auch andere Daten für andere Zwecke werden entweichende als auch, zB Daten sollten wieder an den Browser gesendet wird, maskiert werden, um zu verhindern Schelm Benutzer rohen HTML oder Javascript-Code zu ihm hinzufügen zu manipulieren Ihre Website.

Es gibt eine Reihe von Funktionen in PHP zu Deal mit dem Hinzufügen und Escape-Zeichens und Entfernen von Daten zu filtern. Wenn Sie Ihre Website wollen sicher sein, müssen Sie diese Funktionen und Techniken erlernen.

[Bearbeiten]

Nachdem ich Ihre edit:

Zunächst müssen Sie alle Fäden in der Abfrage entkommen, nicht nur die Beschreibung, so in den $_POST['logoimage1'] entkommen, etc, wie Sie die gleichen Probleme haben werden, wenn irgendwelche von denen Zitate enthalten.

Jedoch auf der Beschreibung der austretende Feld sieht korrigieren, damit ich weiß nicht, warum es abgeschnitten würde. Die man-Seite für mysql_real_escape_string() heißt es, dass es entkommt doppelte und einfache Anführungszeichen, so dass es für Sie in Ordnung sein sollte. Sie können print () ing die vollständig entkommen SQL-Zeichenfolge testen diese; Dies wird zeigen, ob es etwas gibt, links unescaped.

Schuss im Dunkel - haben Sie die maximale Länge des Beschreibungsfeldes in der Datenbank überprüft? Das könnte auch Ursache Zeichenfolge abgeschnitten .. unwahrscheinlich obwohl; Ich stelle mir vor, wenn Sie mit einem Textfeld sind die Eingabe Sie es eingestellt haben werde bis lang genug sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top