/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Indsætning i MySQL database
Fra : Kasper Johansen


Dato : 25-01-06 15:32

Hej gruppe.


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.

Alligevel syntes MySQL nogle gange, at brokke sig over min SQL-streng,
ikke er korrekt.

Tips, tricks, whatever til hvordan jeg løser mit problem?


--
Med venlig hilsen
Kasper Johansen

 
 
Peter Brodersen (25-01-2006)
Kommentar
Fra : Peter Brodersen


Dato : 25-01-06 16:46

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/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408523
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste