Beste forumleden,

Ik snap maar niks van de functies stripslashes, addslashes en str_replace. Ik heb een stukje script aangepast waarmee tekstgegevens nu worden weggeschreven naar de database. Alles gaat goed, totdat er in die tekst gebruik gemaakt wordt van een apostrofe ('). Er volgt een MySQL errormelding.

ergens in het script moet iets komen dat ervoor zorgt dat de apostrofe wel wordt ingelezen, en later weer goed wordt uitgelezen. Ik snap dat de functies addslashes en stripslashes daarvoor gebruikt moeten worden, maar ... wat is er dan mis in dit stukje van het script?

<?php
if($action=="leerling1t") {

$sql = "SELECT *
FROM users
WHERE rang = $rang
ORDER BY groep,voornaam
LIMIT 0,1
";

$resultaat = mysql_query($sql) or die(mysql_error());
$show = mysql_fetch_array($resultaat);
$id = $show['id'];

echo "<form action=\"?action=eleerling1t\" method=\"post\">
<textarea name=\"cont\" cols=\"100\" rows=\"24\">";
$contents = $show['portfolio'];
$from = array("<br>","<br />","\n");
$to = array("\n", "\n", "");
print str_replace($from, $to, $contents);
echo "</textarea><br><input type=\"submit\" name=\"Submit\" value=\"Alles opslaan\"></form>"; }

if($action=="eleerling1t") {

$sql = "SELECT *
FROM users
WHERE rang = $rang
ORDER BY groep,voornaam
LIMIT 0,1 ";

$resultaat = mysql_query($sql) or die(mysql_error());
$show = mysql_fetch_array($resultaat);
$id = $show['id'];

$cont = stripslashes($cont);
$cont = str_replace ("\n","<br>", $cont);
$cont = bbcode ($cont);

$data = "UPDATE users
SET portfolio = '$cont'
WHERE id = '$id'
";

mysql_query($data) or die(mysql_error());

}
?>
alle gebruikersinput verstuur je naar de database met iig de functie [php]mysql_real_escape_string[/php].

Over de informatie die je uit de database trekt gebruik je:

[php]htmlentities[/php]
[php]stripslashes[/php]
[php]nl2br[/php] als het noodzakelijk is.
Bedankt, Erik! Dit is inderdaad wat ik nodig heb. Ik kan weer verder.
Een ander probleem (voor veel van jullie vast een 'probleempje') heb ik met een E-mailformulier.

Steeds wanneer ik in de tekst een woord met een apostrofe (') gebruik, wordt in het uiteindelijke E-mailbericht \' afgedrukt? Hoe krijg ik dat er nu uit?

In de body van het bericht gebruik ik:

<?php
body.= nl2br($_POST['bericht']) ."\r\n";
?>

Verder dus niets rondom tekst.
Moet ik hier ook een commanda extra toevoegen?
[php]stripslashes[/php]

naam zegt het eigenlijk al he ;)
Hallo Erik,

Het is weer voor elkaar. Bedankt voor je snelle reactie!

Reageren