Veel ""''// etc in een query, hoe goed te maken.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jamie A

Jamie A

18/05/2005 16:11:00
Quote Anchor link
Hallo daar,

omdat ik de permissies bij een server niet kan aanpassen (nee, geen CMOD etc) wil ik die pagina in MySQL-database opslaan. Ik heb nu dit:
$sql = "UPDATE ´content´ SET ´inhoud´ = '" . stripslashes($_POST['textdeel']) . "' WHERE ´textid´ = '" . $_GET['textid'] . "' LIMIT 1";

Toch blijven er dingen niet goed. Ik weet niet of <p /> etc mag, maar dit zit er wel in. de $_POST['textdeel'] komt van een WYSIWYG-editor af.

Hoe doe ik deze strin perfect maken?
Het is dus WEL zo dat er HTML in de code mag blijven zitten.

Joris
 
PHP hulp

PHP hulp

22/12/2024 19:14:50
 
Willem Jan Z

Willem Jan Z

18/05/2005 16:31:00
Quote Anchor link
<p /> bestaat volgens mij niet eens..

Maar wat is het probleem nu... Werkt het niet? Zo niet welke foutmelding krijg je?
 
Jamie A

Jamie A

18/05/2005 16:33:00
Quote Anchor link
Ik krijg de melding dat er een error in mijn syntax zit. Er staat dus een '(inhoud)', maar in de inhoud is ook al een ', dus wordt dat deel eerder afgesloten dan gewenst. Ik dacht iets met /" etc, maar precies weet ik het ook niet. Vandaar dat ik dat vraag

En tjah.. die <p /> genereert de WYSIWYG-editor. Deze wordt btw wel goed weergegeven..
 
Legolas

Legolas

18/05/2005 17:28:00
Quote Anchor link
escapen kun je doen met stripslashes() en addslashes()
 
Jamie A

Jamie A

18/05/2005 17:31:00
Quote Anchor link
Je hebt bijvoorbeeld zo'n query:

UPDATE ´content´ SET ´inhoud´ = 'Vraag boekje aan van de 'dagtochten'<br /></font></a><font face="Arial, Helvetica, sans-serif"><a href="index2.php?id=6" target="_top">Zie ook onze meerdaagse groepsreizen</a> <p /></font></font>' WHERE ´textid´ = '1' LIMIT 1

Heb er even een stukje uitgepakt hoor!
Hij geeft nu dus een error bij 'dagtochten'. Hij denkt dat daar het stuk wat in INHOUD geplaatst moet worden ten einde is. Dit is niet het geval. Indien je het met " zou doen, krijg je hetzelfde effect, maar dan met bijv target="_top"

Joris
 
Jamie A

Jamie A

18/05/2005 17:33:00
Quote Anchor link
Legolas:
escapen kun je doen met stripslashes() en addslashes()


Ik heb hem dus al gestripped. Als ik addslashes zou doen, of de string zo zou laten, dan krijg ik <font>-tags die voor html niet meer valid zijn vanwege de / 's
 
Thomas M

Thomas M

18/05/2005 18:05:00
Quote Anchor link
Dan add je de slashes als je ze in de db zet en bij het weergeven gooi je er weer stripslashes overheen.
 
Jamie A

Jamie A

18/05/2005 18:35:00
Quote Anchor link
Thomas:
Dan add je de slashes als je ze in de db zet en bij het weergeven gooi je er weer stripslashes overheen.


En als je dan weer je pagina aanpast?
Dan moet je dus weer een keer die stripslashes over de index gooien. Dat gaat niet werken.
Het kon toch ook met '/ ofzoiets???
 
Willem Jan Z

Willem Jan Z

18/05/2005 18:48:00
Quote Anchor link
addslashes doet precies hetzelfde :S
stripslashes haalt ze juist weer weg...
Als je je pagina aanpast, zet hij dus automatisch weer de slashes / erbij... Omdat dat in je bewerkingsscript staat...
 
Jamie A

Jamie A

18/05/2005 18:51:00
Quote Anchor link
Ik bedoelde zoiets:

...SET ´inhoud´ = /'" . stripslashes($_POST['textdeel']) . "/' WHERE ...

Maar nu weet ik niet precies welke dat is...
Ik bedoelde dus in de SQL-query te zetten en niet in de $_POST['textdeel']...
 
Willem Jan Z

Willem Jan Z

18/05/2005 18:53:00
Quote Anchor link
Waarom zou je ze in een query willen zetten :S
 
Jamie A

Jamie A

18/05/2005 18:56:00
Quote Anchor link
Ik dacht dat dan de query niet meer foutief zou zijn omdat je een ander teken gebruikt voor het begin en het eind van de query.
Ik meen dit echt ergens gezien te hebben :-S
 
Legolas

Legolas

18/05/2005 19:01:00
Quote Anchor link
overigens is het \"
 
Willem Jan Z

Willem Jan Z

18/05/2005 19:02:00
Quote Anchor link
Wat is de error precies??
 
Willem Jan Z

Willem Jan Z

18/05/2005 19:05:00
Quote Anchor link
Legolas:
overigens is het \"


Ja, das waar... sorry...
Waarom heet het trouwens addslashes... Het is toch een backslash?
 

18/05/2005 20:11:00
Quote Anchor link
\ = backslash
/ = forward slash

add = toevoegen
strip = verwijderen
 
Martijn B

Martijn B

18/05/2005 20:52:00
Quote Anchor link
Volgens mij is het (mierenneuk):

\ = back-slash
/ = slash

Ik escape de back-slash en single-quote altijd met addcslashes().

Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
# Escape NULL-byte(\0), backslash(\) and single-quote(')
$subject = addcslashes($subject, "\0\\'");

?>


Op tweakers vind je nog een mooi stukje tekst over escapen:
http://gathering.tweakers.net/forum/list_messages/741007#faq12
Gewijzigd op 18/05/2005 21:00:00 door Martijn B
 
Jamie A

Jamie A

18/05/2005 21:09:00
Quote Anchor link
Ik ga dit zo even proberen...
Natuurlijk kan ik ook de ' en " door een andere reeks tekens vervangen die ik dan later weer replace.. toch?
 
Martijn B

Martijn B

18/05/2005 21:21:00
Quote Anchor link
Je hebt waarschijnlijk temaken met magic_quotes_gpc (zie tekst tweakers). Als je een string op de goede manier escaped dan hoef je niets te doen om de string te laten zien.

Je kunt natuurlijk ook alle html, quotes veranderen in speciale tekens en dan in de db zetten. En als je deze wilt bekijken weer terug veranderen in normale tekens. Dan moet je volgens mij nog wel de back-slashes escapen.

PHP functies hiervoor zijn htmlentities, htmlspecialchars en html_entity_decode.

http://www.php.net/quickref.php
Gewijzigd op 18/05/2005 21:27:00 door Martijn B
 
Willem Jan Z

Willem Jan Z

18/05/2005 21:49:00
Quote Anchor link
Webmakerij:
\ = backslash
/ = forward slash

add = toevoegen
strip = verwijderen


Ik weet ook nog wel dat add toevoegen is :P
Maar addslashes, lijkt logisch dat het dus / toevoegd... Maar gaat nergens over... Sorry voor het ooftopic gaan...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.