Html elementen verdwijnen bij echo vanuit database

  • Onderwerp starter Onderwerp starter baws
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

baws

Terugkerende gebruiker
Lid geworden
9 apr 2010
Berichten
1.258
Hallo,

Ik heb een wysiwig editor http://ckeditor.com/
Wat ik met deze editor schrijf sla ik op in sql bijvoorbeeld:

Code:
<p><strong>Inhoud van het bericht</strong></p>

<p>blabla</p>

<p><s>test</s></p>

<p><a href="http://www.test.nl" target="_blank">LInk naar een bestand</a></p>

<p>J0asaf</p>

<p>&nbsp;</p>

<p>d</p>

Alleen als ik het bericht nu uit de database haal via php zijn alle html tags verdwenen en houd ik over :

Inhoud van het bericht blabla test LInk naar een bestand J0asaf d

Dus alle tags zijn weg de <p> <a> <strong> etc hoe zorg ik dat als ik deze echo deze tags behouden blijven?
 
Hoogstwaarschijnlijk gaat ie voorbij een beveiliging die HTML/MySQL tags eruit haalt.
(Tegen deface, Sql injectie, XSS , etc)

1) Kijk of de tags nog staan in de database: Indien niet, ga dan kijken of je input gefiltered word
2) Indien niet wat hierboven staat, kijk of de output gefiltered word

gr,
Maxim
 
Bij het opslaan gooi je waarschijnlijk strip_tags() of htmlentities() over de variabele
 
Ah ik zie het ja strip_tags, had er nog nooit van gehoord dus dacht dat standaard html niet werd omgezet en ik er dus juist iets voor moest zetten om het wel met tags te krijgen.
Super bedankt !
 
TIP:
- Zorg dat je editor wel enkel Safe-HTML toelaat. anders zou iemand bv. gewoon een redirect
kunnen doen.

nog veel suc6

gr,
Maxim
 
Hoe weet ik of het safe html is?
Ik heb nu:

PHP:
$nieuwstext  = $db->real_escape_string($_POST['nieuwstext']);

om de waarde op te halen.

en dan

PHP:
$query = "UPDATE Nieuws SET NieuwsTitel = '$nieuwstitel', NieuwsText = '$nieuwstext'   WHERE NieuwsId = '$nieuwsid'";
$db->query($query);
 
Normaal doe je mysql_real_escape_string(Je var hier)
Maar ik vermoed dat je DBdriver ($db) dit al doet

Maar wat ik eigenlijk bedoel is de HTML opmaak. Kan je bv. is proberen <script>alert('test')</script> in de editor in te geven (html)
 
Laatst bewerkt door een moderator:
Normaal doe je mysql_real_escape_string(Je var hier)
Het is verstandig dat af te leren :) Alle mysql_*-functies gaan er vanaf PHP 5.5 uit.
In dit voorbeeld wordt zo te zien gebruik gemaakt van MySQLi.

Verder kan de functie strip_tags() prima gebruikt worden, je kunt namelijk aangeven welke tags behouden moeten worden:
Code:
string [B]strip_tags[/B] ( string [B]$str[/B] [, string [B]$allowable_tags[/B] ] )
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan