mysql_escape_string oder addslashes

mysql_escape_string oder addslashes

am 20.09.2004 17:15:57 von Christian Gerner

Unter schreibt
einer:

| While mysql_escape_string seems safer, my experience shows that escaping
| strings with AddSlashes (which is also done automatically if
| magic_quotes_gpc is on) is sufficient, so it seems you can pick whichever
| you wish.

Stimmt das? Hat es *Vorteile _mysql_escape_string_ zu verwenden*?

Re: mysql_escape_string oder addslashes

am 20.09.2004 22:16:10 von Niels Braczek

Christian Gerner schrieb:

> Unter schreibt
> einer:
>
>> While mysql_escape_string seems safer, my experience shows that
>> escaping strings with AddSlashes (which is also done automatically if
>> magic_quotes_gpc is on) is sufficient, so it seems you can pick
>> whichever you wish.
>
> Stimmt das? Hat es *Vorteile _mysql_escape_string_ zu verwenden*?

Mag sein. mysql_escape_string() maskiert jedoch nicht nur einen String
passend für MySQL (was immer dazu nötig sein sollte), es dokumentiert
dies auch durch seinen Namen. IMHO grund genug, es zu verwenden.
Zusatznutzen: Man braucht sich nicht zu fragen, ob mit addslashes() alle
Möglichkeiten abgedeckt werden, die für MySQL relevant sein könnten.

MfG
Niels

--
Mir fehlen die Kenntnisse, um überhaupt eine Vorstellung davon zu
haben, wo ich ansetzen kann den Fehler zu suchen. Einen
Programmierfehler kann ich aber ausschließen.
[Florian Steyer in dclpi]

Re: mysql_escape_string oder addslashes

am 21.09.2004 11:54:19 von Christian Gerner

Niels Braczek schrieb:
> Christian Gerner schrieb:
(...)
>> Stimmt das? Hat es *Vorteile _mysql_escape_string_ zu verwenden*?
>
> Mag sein. mysql_escape_string() maskiert jedoch nicht nur einen String
> passend für MySQL (was immer dazu nötig sein sollte), es dokumentiert
> dies auch durch seinen Namen. IMHO grund genug, es zu verwenden.
> Zusatznutzen: Man braucht sich nicht zu fragen, ob mit addslashes() alle
> Möglichkeiten abgedeckt werden, die für MySQL relevant sein könnten.

Ja, nur wenn ich in einem Script schon überall Addslashes habe, stellt sich
die Frage natürlich schon. Mich wundert es, dass die PHP-Dokumentation
darauf nicht weiter eingeht und auch hier nicht mehr Antworten kamen.
Verwenden sonst alle die mysql_escape_string() Funktion?

In der mySQL-Dokumentation steht erstmal, dass man die Funktion
mysql_real_escape_string() benutzen soll, um den Zeichensatz zu
berücksichtigen. Auf deren Seite
werden
folgende Zeichen genannt:

| Kodierte Zeichen sind NUL (ASCII 0), `\n', `\r', `\', `'', `"' und Control-Z

wobei \z escaped wird, weil

| ASCII(26) (Steuerung-Z). Dieses Zeichen kann kodiert werden, um das
| Problem zu umgehen, dass ASCII(26) unter Windows für Dateiende
| (END-OF-FILE) steht. (ASCII(26) verursacht Probleme, wenn Sie mysql
| Datenbank < Dateiname benutzen.)


Andere Escape-Folgen wie \% oder \_ werden scheinbar auch von
mysql(_real)_escape_string() nicht berücksichtigt.

Gruß,
Christian