Beste mensen,

Ben momenteel bezig met het ontwikkelen van een website.
Hiervoor worden dingen in een database gezet.
Om problemen te voorkomen netjes met addslashes in de database gezet.
Maar als ik nu het via stripslashes eruit haalt laat php de slashes gewoon staan.

zie hier onder de code voor addslashes:
$titel = addslashes($titel);
$bericht = addslashes($bericht);

Code voor stripslashes:
$titel = stripslashes($titel);
$bericht = stripslashes($bericht);

$titel = $record1->titel;
$bericht = $record1->bericht;

$url1 = '<a href="';
$bericht1 = str_replace('[url=', $url1, $bericht);

$url2 = '</a>';
$bericht2 = str_replace('[/url]', $url2, $bericht1);

$url3 = '" target="_blank">';
$bericht3 = str_replace(']', $url3, $bericht2);
Helaas, zowel add als strip kunnen de prullenbak in. Het is niet anders.

Hier een functie die ik eens van Jan Koehoorn heb gekregen:
<?
function quote_smart ($value) {
if (get_magic_quotes_gpc ()) {
$value = stripslashes($value);
}
if (version_compare (phpversion (),"4.3.0") == "-1") {
return mysql_escape_string ($value);
}
else {
return mysql_real_escape_string ($value);
}
}

$titel = quotes_smart($titel);
?>
Deze constructie is voor MySQL, voor PostgreSQL heb je uiteraard een andere quote-functie nodig (zie de php-handleiding).

Het is nog handiger (pers. mening) om PDO te gebruiken en die te laten quoten. Dan hoef jij je helemaal nooit meer ergens druk over te maken, ook niet als je een ander type database gaat gebruiken. PHP versie 5 is wel vereist.
Al opgelost door stripslashes onder de str_replace te plaatsen.

@frank: jou oplossing hou ik ook in me achterhoofd. De oplossing van php5 gaat niet werken in mijn geval. Ik gebruik dit script voor diverse servers, waar php 4 en 5 op draaien. In ieder geval bedankt voor het mee denken!

Hieronder de oplossing in codes:

$titel = $record1->titel;
$bericht = $record1->bericht;

$url1 = '<a href="';
$bericht1 = str_replace('[url=', $url1, $bericht);

$url2 = '</a>';
$bericht2 = str_replace('[/url]', $url2, $bericht1);

$url3 = '" target="_blank">';
$bericht3 = str_replace(']', $url3, $bericht2);

$titel = stripslashes($titel);
$bericht4 = stripslashes($bericht3);

Ander vraagje overigens: ik zie dat frank zijn code netjes in zo'n veld zet. Hoe doe je dat?

ik zie dat frank zijn code netjes in zo'n veld zet. Hoe doe je dat?
Ten eerste is de code afkomstig van Jan Koehoorn en ten tweede heb ik geen flauw idee wat je hier probeert te vragen. Wellicht kun je de vraag op een andere manier stellen.
als je de <?php hier je code plaatsen ?> tekens gewoon typt word het automatisch in een code vak gezet.
Een andere optie is het typen van
[ignore]
hier je code plaatsen
[/ignore].
Dat bedoelde hij ;)
Ah! Op die fiets
Jep dat bedoelde ik! Maar in ieder geval: iedereen bedankt voor jullie hulp!

Reageren