[php] apostrof in content sql query

Pagina: 1
Acties:
  • 241 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben er na lang zoeken achter dat een invoer van een gebruiker niet verwerkt wordt als deze een apestrof (') bevat. Logisch want in PHP wordt dat uitgeschreven en dan staat er een apestrof midden in de query, en dat kan niet.

code:
1
2
$result = mysql_query("INSERT INTO prikbord VALUES('',FROM_UNIXTIME($tijd),'$REMOTE_ADDR','$tekst','$name','$extrainfo')")
    or exit ("Fout, het plaatsen van uw bericht is mislukt: " . mysql_error());


Ik gebruik FCKEditor als invoer eenheid. Maar.... ik dacht dat die dit probleem wel zou tekkelen. niet dus.... wie weet raad?

[ Voor 198% gewijzigd door RobIII op 12-12-2023 10:59 . Reden: TS terug gezet ]


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
Bij opslaan
$tekst = addslashes( $tekst);

Bij tonen
$tekst = stripslashes( $tekst);

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Kijk eens naar mysql_real_escape_string, die is hiervoor gemaakt.
Bij opslaan
$tekst = addslashes( $tekst);

Bij tonen
$tekst = stripslashes( $tekst);
Bij tonen hoef je niks weg te halen; dat wordt immers niet opgeslagen. Addslashes is trouwens een zeer nutteloze functie, die je nooit moet gebruiken.

[ Voor 66% gewijzigd door GlowMouse op 09-04-2007 15:46 ]


Acties:
  • 0 Henk 'm!

  • 0xDEADBEEF
  • Registratie: December 2003
  • Niet online

"Religion is an insult to human dignity. With or without it you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." - Steven Weinberg


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
GlowMouse schreef op maandag 09 april 2007 @ 15:45:
Kijk eens naar mysql_real_escape_string, die is hiervoor gemaakt.


[...]

Bij tonen hoef je niks weg te halen; dat wordt immers niet opgeslagen. Addslashes is trouwens een zeer nutteloze functie, die je nooit moet gebruiken.
Waar haal jij de informatie vandaan dat er met MYSQL gewerkt wordt (mysql_real_escape) (of werkt deze functie ook voor mssql servers e.d.)

btw, opzich is met de addslashes functie niets mis. Als die echt zo 'nutteloos' was geweest, als jij beweerd, waarom is die dan niet 'deprecated' ?

offtopic:
Mijn PHP kennis komt uit < 2005. Dus je zal best gelijk hebben. Maar dan nog, ik heb die functie vroeger vaak gebruikt en heb er nooit enig probleem van ondervonden. Al dan nog, speelt de server configuratie e.d. nog steeds een rol

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
gideon82 schreef op maandag 09 april 2007 @ 15:52:
[...]

Waar haal jij de informatie vandaan dat er met MYSQL gewerkt wordt (mysql_real_escape) (of werkt deze functie ook voor mssql servers e.d.)
Uit de topicstart, daar wordt van mysql_query gebruikgemaakt :>

discussie addslashes vs. mysql_real_escape_string

[ Voor 15% gewijzigd door GlowMouse op 09-04-2007 15:55 ]


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
GlowMouse schreef op maandag 09 april 2007 @ 15:52:
[...]

Uit de topicstart, daar wordt van mysql_query gebruikgemaakt :>
_O-
offtopic:
you win (had ik overheen gekeken. Maar goed :))

edit:
Bij tonen hoef je niks weg te halen; dat wordt immers niet opgeslagen. Addslashes is trouwens een zeer nutteloze functie, die je nooit moet gebruiken.
Als je addslashes gebruikt, moet je zover ik weet wel de functie 'stripslashes' gebruiken. Aangezien zoals de naam al doet vermoeden, er slashes worden toegevoegd. Wanneer je die niet verwijderd (stript), zal je content dus vertoont worden met die slashes erin

offtopic:
(ik vermoed eigenlijk dat je doelt dat indien je de functie 'mysql_real_escape_string' gebruikt, de string 'klaar' is voor gebruik bij vertoning. Of dit correct is, weet ik persoonlijk niet. Maar zoals aangegeven hierboven, moet je bij addslashes het iig wel strippen

[ Voor 63% gewijzigd door mrFoce op 09-04-2007 16:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.

[ Voor 97% gewijzigd door Verwijderd op 01-11-2023 01:46 ]


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
Verwijderd schreef op maandag 09 april 2007 @ 15:56:
Dat addslashed werkt. Op zich vreemd dat FCKEditor dat dus niet doet....
Mooi, maar kijk toch even naar de reply van GlowMouse GlowMouse in "[php] apestrof in content sql query" (aangezien zoals ik al aangaf, mijn PHP kennis van < 2005 stamt) en er wellicht betere manieren zijn

Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
Verwijderd schreef op maandag 09 april 2007 @ 15:56:
Dat addslashed werkt. Op zich vreemd dat FCKEditor dat dus niet doet....
Vreemd? FCKEditor wordt wel voor meer zaken gebruikt dan alleen om invoer naar de database te storen...

Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
Pulsher schreef op maandag 09 april 2007 @ 16:00:
[...]

Vreemd? FCKEditor wordt wel voor meer zaken gebruikt dan alleen om invoer naar de database te storen...
FCK heeft zover ik weet, helemaal niets te maken met 'databases'. De opslag van gegenereerde data (van de editor) moet je zelf zien te regelen :) FCKeditor is 'gewoon' een editor (en een goede O-) )

Acties:
  • 0 Henk 'm!

  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Verwijderd schreef op maandag 09 april 2007 @ 15:56:
Dat addslashed werkt. Op zich vreemd dat FCKEditor dat dus niet doet....
Dit wil je FCKeditor ook helemaal niet laten doen, stel je wilt de input gelijk weer outputten op een pagina, of opslaan in een bestand, dan staan hier overal van die stomme //'s tussen. Het is net als bij php zelf, als je hier een ' in een string zet moet je deze ook escapen, dit doe je zo ook gewoon bij sql.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:54

Janoz

Moderator Devschuur®

!litemod

gideon82 schreef op maandag 09 april 2007 @ 15:54:
Als je addslashes gebruikt, moet je zover ik weet wel de functie 'stripslashes' gebruiken. Aangezien zoals de naam al doet vermoeden, er slashes worden toegevoegd. Wanneer je die niet verwijderd (stript), zal je content dus vertoont worden met die slashes erin
Nope, niet waar. Addslashes escaped inderdaad de quotes, maar dat betekend niet dat de slashes ook in de database terecht komen. De slash geeft aan mysql aan dat die quote bij de data hoort en niet een sluit quote is. Mysql zal dan dus gewoon enkel de quote en niet de slash opslaan. Mocht je wel slashes in je database krijgen (en stripslashes nodig hebben bij het afbeelden) dan komt dit omdat je addslashes 2x hebt uitgevoerd (wat heel goed mogelijk is door het ranzige magicslashes van php)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
Janoz schreef op maandag 09 april 2007 @ 22:25:
[...]

Nope, niet waar. Addslashes escaped inderdaad de quotes, maar dat betekend niet dat de slashes ook in de database terecht komen. De slash geeft aan mysql aan dat die quote bij de data hoort en niet een sluit quote is. Mysql zal dan dus gewoon enkel de quote en niet de slash opslaan. Mocht je wel slashes in je database krijgen (en stripslashes nodig hebben bij het afbeelden) dan komt dit omdat je addslashes 2x hebt uitgevoerd (wat heel goed mogelijk is door het ranzige magicslashes van php)
offtopic:
Kijk, dan heeft bij mij op die server toendertijds (wat een woord) magicslashes aangestaan. Ik had ze in ieder geval nodig :)

[ Voor 10% gewijzigd door mrFoce op 09-04-2007 23:14 . Reden: wat irrelevante tekst verwijderd ]


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
gideon82 schreef op maandag 09 april 2007 @ 23:12:
[...]


offtopic:
Kijk, dan heeft bij mij op die server toendertijds (wat een woord) magicslashes aangestaan. Ik had ze in ieder geval nodig :)
Het juiste woord is trouwens magic quotes :) .

If I can't fix it, it ain't broken.

Pagina: 1