2009-08-17 2 views
2

In meinem Code verwende ich addslashes, um bestimmte Zeichen zu entkommen, während sie in die Datenbank einfügen und wenn ich einige Informationen senden, verwende ich stripslashes, um diese Schrägstriche zu entfernen, die Situation ist stripeslashes Funktion entfernt alle die Schrägstriche also, wenn ich irgendeine Schnur senden muss, die umgekehrte Schrägstriche hat, die auch entfernt werden. Wie kann ich diese erforderlichen Schrägstriche beibehalten?Flucht mit Schrägstrichen und dann stripslashes verwenden PHP

Jede Hilfe wird sehr zu schätzen wissen.

+1

** Verwenden Sie nicht 'addslashes()', es ist viel Mühe, aber funktioniert nicht. Siehe Antworten von Chacha102 oder iandc76. –

Antwort

8

Sie könnten versuchen, mit mysql_real_escape_string zu verwenden. Sie müssen es nicht entwirren und es ist sicher für die Datenbanknutzung.

Noch besser wäre es, verwenden prepared statements

+0

Vielen Dank für die Eingaben, in einem Szenario, in dem der Code ausgiebig addslashes verwendet und die Kompatibilität mit MSSQL und MYSQL beibehalten wird funktioniert der mysql_real_escape_string noch? Ich denke es wird, wie es php Funktion ist, nur bestätigen wollen. Es ist auch ratsam, einige Codierungsfunktionen wie str_replace ("\\", "\", stripslashes ($ string)) zu verwenden. Bitte um Rat. – pks83

+0

Ich würde auf vorbereitete Aussagen schauen. Denn wenn du vorbereitete Aussagen eingibst, wirst du das gleiche bekommen, wenn du herauskommst. Das bedeutet, dass Sie keine aktuellen Schrägstriche brechen, wenn Sie nicht sofort das gesamte System wiederherstellen möchten. Wenn Sie die PDO-Bibliothek für vorbereitete Anweisungen verwenden, erhalten Sie Kompatibilität mit jeder Datenbank. –

-3

Ich denke, es ist besser htmlspecialchars zu verwenden, um die Daten für die Speicherung in Datenbanken zu entkommen. Sie müssen sich keine Gedanken darüber machen, sie nach dem Abrufen von der Datenbank wiederherzustellen, da sie vom Browser korrekt behandelt werden.

+1

Das einzige Problem mit diesem ist, dass, wenn Sie tatsächlich wollen, dass Dinge wie HTML-Tags, wie auf einem Formular oder einem Blog, behalten werden, Sie erinnern müssen, sie zu entschlüsseln. –

+1

Dies schützt vor schlechtem HTML und sollte bei der Ausgabe in HTML erfolgen. Es schützt nicht vor SQL-Injection, was die Gefahr ist, Daten in eine Datenbank zu stellen. – Quentin

+0

Es scheint immer noch eine bessere Idee zu sein als 'addslashes' und' stripslashes'. – RaYell

3

Sie können PDO-vorbereitete Anweisungen verwenden, wenn Sie in die Datenbank einfügen, so dass Sie sich keine Gedanken darüber machen müssen, ob Sie etwas entgehen.

2

In meinem Code i addslashes bin mit bestimmten Zeichen zu entkommen, während sie in die Datenbank einfügen und wenn ich einige Informationen auszusenden ich benutze strip diese Schrägstriche zu entfernen ...

Sie tun es ist falsch. Sie müssen Zeichenfolgen ausschließen, wenn Sie sie in eine Abfrage einbetten. Sie tun nicht Unescapedaten, wenn es von der Datenbank zurückkommt. Es sind keine Schrägstriche zu entfernen. Sie existieren nur in der Abfrage - nicht in der Datenbank.

Darüber hinaus sind gebundene Parameter/vorbereitete Anweisungen viel besser, wie bereits von anderen in diesem Thread erwähnt.

Verwandte Themen