Veel ""''// etc in een query, hoe goed te maken.
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
Maar wat is het probleem nu... Werkt het niet? Zo niet welke foutmelding krijg je?
En tjah.. die <p /> genereert de WYSIWYG-editor. Deze wordt btw wel goed weergegeven..
escapen kun je doen met stripslashes() en addslashes()
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
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
Dan add je de slashes als je ze in de db zet en bij het weergeven gooi je er weer stripslashes overheen.
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???
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...
...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']...
Waarom zou je ze in een query willen zetten :S
Ik meen dit echt ergens gezien te hebben :-S
overigens is het \"
Wat is de error precies??
Legolas:
overigens is het \"
Ja, das waar... sorry...
Waarom heet het trouwens addslashes... Het is toch een backslash?
/ = forward slash
add = toevoegen
strip = verwijderen
\ = back-slash
/ = slash
Ik escape de back-slash en single-quote altijd met addcslashes().
Voorbeeldje:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
# Escape NULL-byte(\0), backslash(\) and single-quote(')
$subject = addcslashes($subject, "\0\\'");
?>
# 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
Natuurlijk kan ik ook de ' en " door een andere reeks tekens vervangen die ik dan later weer replace.. toch?
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
Webmakerij:
\ = backslash
/ = forward slash
add = toevoegen
strip = verwijderen
/ = 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...