Frage

ich ein Registrierungssystem haben, die einen Benutzer Namen anfordert. Manche Menschen haben einen Apostroph in ihrem Namen und es verhindert, dass die Daten aus, um die MySQL-Datenbanktabelle geschrieben werden (z O'Hare).

Ich bin mit mysql_real_escape_string, die den Apostroph aus der Zeichenfolge zu entfernen. Dies würde in Ordnung sein, außer ich den Wert mit dem Apostroph gegen einen Web-Service verwenden muß, da sonst die Web Service falsch zurück.

Ich dachte, ich könnte die Namensprüfung mit dem Web-Service tun, bevor mysql_real_escape_string mit, konnte aber diese stellen eine Sicherheitslücke? Oder tun SOAP Web Services bereits ihre eigenen Kontrollen für saubere Eingänge tun?

Oder gibt es eine bessere Art und Weise durch die Variable vorbei, wodurch PHP den Apostroph behält aber immer noch hält es sicher und MySQL kann es akzeptieren?

War es hilfreich?

Lösung

Sie sollten zeigen uns einige Code, weil mysql_real_escape_string nicht ein Apostroph entfernen, aber nur entkommen sie.
Austretende Mittel O'Hare wird O\'Hare werden, so dass es als eine Zeichenfolge eingefügt werden kann: 'O\'Hare'. Nach dem Abrufen aus der Datenbank sollte Ihr Wert noch die ursprünglichen O'Hare sein.

Also, wenn der Apostroph ist ‚verloren‘ es ist wahrscheinlich ein Fehler irgendwo anders in Ihrer Programmlogik.

Die andere Option ist, um Schalter von der Nutzung der MySQL-Bibliothek zum MySQLi oder PDO-Bibliothek für Ihre Datenbank zugreifen. Die beiden zuletzt genannten Träger hergestellt Aussagen. Vorbereitete Anweisungen sind für das Abfragen der Datenbank allgemein angenommen, als die beste Praxis zu sein.

Andere Tipps

mysql_real_escape_string() nicht Apostrophe entfernen.

Ihr Problem ist wahrscheinlich auf der Ausgangsseite oder eine andere Funktion mit dem Eingang durcheinander.

Sie müssen eine Datenbankverbindung geöffnet haben, bevor Sie mysql_real_escape_string verwenden oder es wird eine Fehlfunktion.

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