On Wed, 25 Jan 2006 15:31:39 +0100, Kasper Johansen
<kaspernj@gmail.com> wrote:
>Jeg har et wysiwyg-felt på min side. Dette genererer en hel masse HTML,
>som jeg gerne vil gemme i en database (et slags beskedcenter hvor man
>kan sende beskeder til hinanden). Det foregår over en MySQL database.
>
>Jeg har magic-quotes slået til. Men nogle gange virker det ikke helt som
>det skal. Derfor kører jeg også addslashes() på strengen.
Allerede her virker det som om, du taber kontrollen over dit input
Hvornår "nogle gange" virker det ikke?
>Alligevel syntes MySQL nogle gange, at brokke sig over min SQL-streng,
>ikke er korrekt.
Hvis dataen kommer udefra (gennem post, get, cookie, etc.) hjælper
magic_quotes_gpc dig rigtigt nok. Hvis du læser indhold fra en
database eller en fil, er indholdet derimod ikke escapet for dig.
>Tips, tricks, whatever til hvordan jeg løser mit problem?
Sørg for at finde ud af, præcis hvilken mysql-fejl, du får. Tjek hvor
fejlen er. Og sammenhold med den præcise query, du har sendt til
mysql-serveren (og ikke blot hvad du tror, du sender til
mysql-serveren). Ved at outputte din aktuelle query, burde du kunne
se, hvor fejlen ligger, for når MySQL brokker sig over din SQL-streng,
så *er* det fordi, der er en fejl i din SQL-streng.
En overordnet mulighed er at skifte til et database-abstraktionslag,
der kan gøre alt arbejdet og escape hvad der skal escapes for dig, og
så slå magic_quotes fra i samme omgang.
En sådan pakke kunne fx være PEARs DB:
http://pear.php.net/package/DB/
Den følger nok allerede med din PHP-distribution.
--
- Peter Brodersen
Find dig selv:
http://map.ter.dk/