Beste mensen van PHPhulp,

Ik ben bezig met een scriptje om code met anderen te delen, alleen loop ik tegen het volgende probleem aan.
Zodra je namelijk een stuk PHP code in een textarea zet, en die ophaalt met de $_POST['textarea'], lijkt het alsof de code word uitgevoerd.
Dit is alleen niet de bedoeling aangezien de PHP code als plain text in de SQL database moet worden opgeslagen.

Zou iemand me kunnen helpen met de $_POST['textarea'] naar plain text te kunnen krijgen?

Wat ik tot nu toe heb:

$text = $_POST['textarea'];

En die moet in de SQL database opgeslagen worden als plain text:

mysqli_query($con,"INSERT INTO codes (codeId, originaltext)VALUES ('$cid', '$text')");

Alleen lijkt het erop alsof de PHP code word uitgevoerd wanneer de SQL query word uitgevoerd
Een voorbeeld van wat er in de textarea staat:

<?php

echo 'Test';

?>

Alvast bedankt voor jullie hulp!

Groet,

Wesley
Gebruik output escaping.

Voor de MySQL context --> mysqli_real_escape_string($link, $data) zodat DATA niet als SQL wordt geinterpreteerd.

Voor de PHP/HTML context --> gebruik htmlspecialchars($data, ENT_QUOTES, 'UTF-8') bij het afdrukken zodat DATA niet als HTML geinterpreteerd kan worden. Het lijkt mij onmogelijk dat PHP echt als code uitgevoerd wordt als je dit afdrukt, tenzij je eval() gebruikt ofzo. Ik neem aan dat je UTF-8 gebruikt?

Noodzakelijke voorwaarde voor het correct werken van escaping is dat je character encoderingen kloppen.

Mochten sommige bovenstaande termen je weinig zeggen zou ik mij daar eerst eens verdiepen voordat je wat voor code dan ook gaat beheren / weergeven op zo'n manier.
Heb het voor elkaar gekregen met de mysqli_real_escape_string!

Ik wil je hartelijk bedanken voor je hulp!

Groet,
Wesley

Reageren