Hallo,

Waarschijnlijk is mijn probleem niet zo moeilijk. De oplossing heb ik nog niet gevonden.
Heb ik het niet gezien? is mogelijk. wijs me de weg.

Het volgende. Mijn database, bij Lycos, kan in via MySQL beheer updaten. Het veld is wat klein en ik dacht het een voudig in te lezen en weer weg te schrijven. Echter bij speciale karakters werk het niet. Ik heb in de tekst bijvoorbeeld <a href="javascript:void(0);" onmouseover=",return enzovoort, staan. Het gaat mis op de eerste dubbele apostrophe. Zet ik echter voor die apostrophe: &quot; dan wort er een dubbele apostrophe neergezet en niet wat er echt staat: &quot;.

Zo had ik het gedacht neer te zetten op mijn scherm.
echo "<p><b>Tekst1: </b>";
echo $row['tekst1']."<br>";
$tekst1 = $row['tekst1'];
echo '<input textarea cols="150" rows="20" name="tekst1" value="' . $tekst1 . '" />';

Wat moet ik toevoegen?

Alvast bedankt, Adri
<input textarea cols="150" rows="20" name="tekst1" value="' . $tekst1 . '" />';

Dit kan niet. Of input of textarea. Textarea heeft geen value.
Gebruik mysql_real_escape_string() voor het plaatsen:

<?php
 //voorbeeld
 mysql_query("INSERT INTO tabel(tekst) VALUES('".mysql_real_escape_string($_POST['tekst']."')");
 ?>

En haal hem door stripslashes bij het ophalen:

<?php
//voorbeeld
$var= stripslashes($var);
?>


En als je dit: javascript:void(0); echt gebruikt weet dan dat dat alleen in IE werkt.
stijn schreef op 16.02.2008 17:35
En haal hem door stripslashes bij het ophalen:
Dat heb je alleen nodig wanneer je bij het invoeren de data hebt verknald...

Data sla je niet op met slashes, er valt dus niks te strippen.
Aan SanThe:
Hoe het ook zij, ik krijg wel te zien wat er staat echter met de aangegeven veranderingen.

Aan stijn:
Geen idee wat ik doe maar stripslashes geeft geen verandering. Verder gebruik ik Opera. Heb IE opgestart en krijg hetzefde te zien behalve dat IE de cols en rows niet uitvoert.

De tweede aanwijzing kan ik pas uitvoeren als ik in staat ben de juiste text op te halen.

Wie helpt verder?
Adri
@Frank; hoe wilde jij je database dan verknallen? Query's kunnen er zelfs door in de war raken. Mysql_real_escape_string is nodig om de data in de database te zetten. Bij het uitlezen zul je dan altijd de backslashes zien. Hoe wilde je deze anders weghalen? Stripslashes is dé manier. Ik snap niet wat je nu speculeert over verknalde data, want als je juist geen backslashes toevoegt, verknal je de query.
Ja he? De functie mysql_real_escape_string() zorgt er inderdaad voor dat bepaalde tekens in de input met backslashes geëscaped worden zodat deze veilig in een query te gebruiken is. Op deze manier worden de queries zonder fouten uitgevoerd maar het zorgt er absoluut niet voor dat de input met backslashes in de database komt te staan!

Als dat wel het geval is gaat er al iets fout voordat jij de gegevens naar de database wegschrijft. Een voorbeeld daarvan zou het gebruik van mysql_real_escape_string() kunnen zijn terwijl de magic_quotes_gpc instelling aan staat. In dat geval worden alle tekens dubbel geëscaped en krijg je dus wel backslashes in je database...

Kortom, data hoort zonder backslashes in je database te staan en als gevolg daarvan zul je de functie stripslashes() ook nooit in deze toepassing nodig hebben!
Djemo schreef op 16.02.2008 22:53
@Frank; hoe wilde jij je database dan verknallen? Query's kunnen er zelfs door in de war raken. Mysql_real_escape_string is nodig om de data in de database te zetten. Bij het uitlezen zul je dan altijd de backslashes zien. Hoe wilde je deze anders weghalen? Stripslashes is dé manier. Ik snap niet wat je nu speculeert over verknalde data, want als je juist geen backslashes toevoegt, verknal je de query.
En sinds wanneer zet mysql_real_escape_string() een hardcode \ in de database?

Wanneer jij backslashes uit de data moet halen, heb je geen goede data in de database staan, deze heb je zelf willens en wetens naar de klote geholpen. Daar valt niks aan te speculeren! Data staat altijd rauw in de database, zonder enige poespas. Wie of wat daar ook mee aan de slag gaat, je hoeft nooit eerst de data op te schonen. Moet dat wel, heb jij (of 1 van je collega's) iets goed fout gedaan. Geen twijfel over mogelijk.
Beste allemaal,

Ik ben er uit, het verhaal om de backslashes gaf mij een richting om nog eens verder te zoeken in de handleidingen. Met wat try en error heb ik naar ik verder verwacht de oplossing gevonden.

echo $row['tekst1']."<br>";
$tekst1 = htmlspecialchars($row['tekst1'], ENT_QUOTES);
echo '<input textarea cols="150" rows="20" name="tekst1" value="' . $tekst1 . '" />';

De eerste echo zet het op het scherm zoals het ook op de website komt te staan en de tweede echo zet het in een venster wat ik dan aan kan passen en weer terug kan schrijven, Dit alles om het onderhoud gemakkelijker te maken.

Loop ik zo tegen andere problemen?
Bedankt Adri
Zo zou het kunnen werken, alleen klopt de code voor je textarea niet. Dat hoort altijd nog zoiets te zijn:

<texarea name="tekst1" rows="20" cols="150">Hier je tekst</textarea>
echo '<input textarea cols="150" rows="20" name="tekst1" value="' . $tekst1 . '" />';
En wat is dat voor iets vreemds?

Je hebt de input-tag, bv. voor een text-veld en je hebt de tag textarea. Jij gooit hier de boel aardig door elkaar... Daarnaast kent een textarea geen value.

Dit mag het worden in je html:

<textarea cols="150" rows="20" name="tekst1">jouw waarde</textarea>

Reageren