PHP/MYSQL Vreemd probleem met html inserten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 20-09 09:00
Alleerst de specs

WIndows machine IIS6
PHP5
MYSQL5

Ik heb het volgende al geprobeerd

htmlspecialchars()
mysql_escape_string()
utf8_encode()

Het volgende is er aan de hand. Zodra ik html insert in de database (door insert of update) zet hij de boel om.

Bijv je insert

code:
1
2
3
4
5
<table>
<tr>
<td></td>
</tr>
</table>


Dit komt dat in de database als

code:
1
&lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;


In de query die mysql uitvoer staat het dus nog wel goed. Ik wil dus dat het in de database komt als puurt html. Hoe doe ik dit?
Als ik de zelfde query uitvoer in navicat (mysql client) dan gaat het prima dus het lijkt php te zijn?

Click hier niet


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

http://be.php.net/htmlspecialchars

Dit mag je dus NIET gebruiken, dan gebeurt het niet.

Laat eens je INSERT code zien?

[ Voor 29% gewijzigd door Snake op 28-04-2007 22:42 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

mysql_real_escape_string zet quote's bepaalde tekens inderdaad om. Probeer het eens met addslashes.

[ Voor 11% gewijzigd door TheBorg op 28-04-2007 22:45 ]


Acties:
  • 0 Henk 'm!

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn nna 👌

Waarom wil je eigenlijk html in je database ?

don't be afraid of machines, be afraid of the people who build and train them.


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

k8skaaay schreef op zaterdag 28 april 2007 @ 22:53:
Waarom wil je eigenlijk html in je database ?
Als hij een weblog heeft, en de posts zelf, daar wil je wel eens HTML in hebben ;)

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Ganja-Cape
  • Registratie: Maart 2001
  • Laatst online: 20-09 09:41
Ik heb altijd geleerd dat HTML in een database een big no-no is. Stel je bijvoorbeeld het volgende voor, je hebt 100(00)de paginas in je database maar nu wil je iets in die outlay veranderen... dat betekend dus 100(00)de keren HTML aanpasen...

Nu weet ik niet wat de TS van plan is maar zoals Snake zegt, een paar regeltjes kan natuurlijk geen kwaad maar ik zou persoonlijk nooit hele HTML paginas opslaan in de database.

En nu weer ontopic :P

Acties:
  • 0 Henk 'm!

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn nna 👌

Snake schreef op zaterdag 28 april 2007 @ 22:54:
[...]

Als hij een weblog heeft, en de posts zelf, daar wil je wel eens HTML in hebben ;)
Dan nog , BBcode (of een variant daarop) is daar toch wel makkelijker voor ?

don't be afraid of machines, be afraid of the people who build and train them.


Acties:
  • 0 Henk 'm!

  • Ganja-Cape
  • Registratie: Maart 2001
  • Laatst online: 20-09 09:41
Ik heb dus even hier het volgende geprobeerd

code:
1
2
3
4
5
INSERT INTO table (
column
) VALUES (
'<html>yay</html>'
)


En dit gaat bij mij helemaal goed dus laat misschien eens wat code en/of querys zien?

Acties:
  • 0 Henk 'm!

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 20-09 09:00
Maakt toch niet uit waarom ik het wil, ik wil het :D

addslashes doet ook niks aan het probleem.

Mijn update query is bijv

UPDATE TBLMOD_PLAINPAGE SET title = 'Content Style 1',content = '<table> <tbody> <tr> <td> </td> </tr> </tbody> </table>',ppdefault = '0' WHERE id = '4' AND siteid = '1'

En ik gebruik hiervoor gewoon mysqli_query()

Vervolgens komt het zo in de DB

code:
1
2
3
4
5
6
7
&lt;table&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;

[ Voor 22% gewijzigd door reapher op 28-04-2007 23:29 ]

Click hier niet


Acties:
  • 0 Henk 'm!

  • ERIKvanPAASSEN
  • Registratie: September 2006
  • Laatst online: 20-09 10:12

ERIKvanPAASSEN

Bug Killer

k8skaaay schreef op zaterdag 28 april 2007 @ 23:12:
Dan nog , BBcode (of een variant daarop) is daar toch wel makkelijker voor ?
offtopic:
HTML in een MySQL-database is echt niet vreemd hoor! Grote CMS' doen dit ook. Deze bevatten vaak een WYSIWYG-editor als FCK-editor. Deze is gebaseerd op een iframe waarvan de inhoud editable is (designMode aan, gewoon een ingebakken functie in de iframes). De output hiervan is HTML, welke weer wordt opgeslagen in een database.

Ik heb zelf ook een CMS gebouwd met een eigen WYSWYG-editor gebaseerd op zo'n iframe. Met behulp van javascript en execCommand kan je er een (bijna) volwaardige editor van maken.

designMode: http://msdn2.microsoft.com/en-us/library/ms533720.aspx
execCommand: http://msdn2.microsoft.com/en-us/library/ms536419.aspx
8)

[ Voor 5% gewijzigd door ERIKvanPAASSEN op 28-04-2007 23:46 ]


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 20:32
Sterker nog, ook React (de forumsoftware waar we nu op zitten) slaat html op in de database :)

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • Ganja-Cape
  • Registratie: Maart 2001
  • Laatst online: 20-09 09:41
@Reapher, heel vreemd... :S Natuurlijk zou je voor dirty kunnen gaan en het zo laten en bij het ophalen er een html_entity_decode(); overheen gooien, maar dat zou ik niet doen :P De enigste oorzaak die ik kan verzinnen is dat het een probleem is met je Character Set van je database tabel, maar dit is een wilde gok van mij.

Heb ook even rond gegoogled en het lijkt wel of jij de enigste bent met het probleem, lol :P

Acties:
  • 0 Henk 'm!

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 20-09 09:00
Ja precies dat vermoede had ik ook al :D

Maar een directe insert in mysql via bijv navicat gaat prima. Dus zou het ook in php kunnen zitten?

Click hier niet


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
TheBorg schreef op zaterdag 28 april 2007 @ 22:43:
mysql_real_escape_string zet quote's bepaalde tekens inderdaad om. Probeer het eens met addslashes.
Dat is een van de slechtste adviezen die je kan geven... mysql_real_escape_string moet je juist gebruiken in plaats van addslashes.

Maar beide zetten de < en > niet om naar &lt; en &gt;, de enige manier waarop dat kan gebeuren is omdat de tekst blijbkaar ergens door htmlspecialchars/htmlentities gehaald wordt. En dat heeft niks met de eigen mysql_real_escape_string/addslashes of de manier waarop MySQL de query verwerkt te maken, dat zit in de code van reapher ergens.
reapher schreef op zaterdag 28 april 2007 @ 22:38:
Ik heb het volgende al geprobeerd

htmlspecialchars()
mysql_escape_string()
utf8_encode()
En blijkbaar heb je eigenlijk geen flauw idee wat de verschillen tussen die functies zijn? De eerste is namelijk precies het soort functie die doet wat jij beschrijft als 'fout' (hij heeft dan ook een heel ander doel), de tweede moet je gebruiken om je data veilig in MySQL te kunnen stoppen en de derde is weer totaal niet relevant in de meeste gevallen.

De beste manier om te kijken hoe je query er uiteindelijk uit ziet is natuurlijk gewoon een echo-statement te gebriuken net voor je hem in mysql_query stopt, want je kan wel denken dat je weet hoe ie werkt... maar dat zegt nog niet dat ie het ook zo doet :) (owja, en als je bij echo dan < ziet, dan is er natuurlijk &lt; geinsert he...)

Acties:
  • 0 Henk 'm!

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 20-09 09:00
Ach ik weet wel wat die functies doen maak je geen zorgen. Maar ik had op verschillende sites gevonden dat het misschien werkte ookal wist ik wel dat het onzin was. Maar niet geschoten is altijd mis.

Hoewel het tweede zeker wel handig is :D. Kennelijk doe ik dus ergens zelf dit omzetten :S. Als dit zo is voel ik me best wel dom ghehehe

Click hier niet


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Misschien moet je eventjes letterlijk de code pakken waar de query wordt uitgevoerd, zodat wij kunnen zien waar het mis gaat ;)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
reapher schreef op zondag 29 april 2007 @ 14:14:
Maar ik had op verschillende sites gevonden dat het misschien werkte ookal wist ik wel dat het onzin was. Maar niet geschoten is altijd mis.
Sja, maar als je weet wat ze doen en dus weet dat het onzin is kan je beter een keer goed naar je probleem kijken, dan dat je tijd verspild aan het toch maar tegen beter weten in proberen ;)
Kennelijk doe ik dus ergens zelf dit omzetten :S. Als dit zo is voel ik me best wel dom ghehehe
Ga dan maar beginnen met je dom te voelen, want dit soort omzettingen gebeurt niet vanzelf :P

Acties:
  • 0 Henk 'm!

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 20-09 09:00
Ik ben dom :D

Probleem opgelost ghehehe Deze kan gesloten worden

Click hier niet


Acties:
  • 0 Henk 'm!

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
k8skaaay schreef op zaterdag 28 april 2007 @ 23:12:
[...]

Dan nog , BBcode (of een variant daarop) is daar toch wel makkelijker voor ?
normaal gesproken sla je compiled en uncompiled op (voor een forum)
je slaat de bb op om te editten en eventueel je tekst style's te kunnen aanpassen.
de html sla je op omdat het parsen van bb te langzaam is voor een grote internet applicatie.
Vandaar dat je deze cached met een 'update nummer'. op het moment dat jij de bb code aanpast pas je je bbcode version aan en op het moment dat hij een oude post met de vorige parser versie hebt parsed hij ze eenmalig opnieuw.

Acties:
  • 0 Henk 'm!

  • Dwightjo
  • Registratie: Juni 2003
  • Laatst online: 23-08 13:40
reapher schreef op zondag 29 april 2007 @ 14:25:
Ik ben dom :D

Probleem opgelost ghehehe Deze kan gesloten worden
misschien handig om te plaatsen wat het probleem nou was, kan misschien voor een ander in de toekomst handig zijn

Illest Alive

Pagina: 1