Jeg er ved at lave en side hvor jeg kan rette i noget tekst i databasen. Når dataen bliver lagt i databasen bliver linieskiftene lavet om til <br />
Men når jeg så vil rette i det kommer det til at se sådan ud i text area boksen: ewra<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> erwszf<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> regd
Og der bliver tilføjet et <br/> for hver gang man gemmer..
Hvordan får jeg det lavet om så man ikke kan se <br /> i mit text area??
For en sikkerheds skyld skal du bruge addslashes() før du indsætter noget i din database, som en gæst/bruger har skrevet :-) Det er for at undgå SQL injections. Funktionen tilføjer simpelt hen bare et backslash (\) foran ' og " tegn i teksten, så brugeren ikke kan "modificere" din SQL forespørgsel.
Når du indsætter tekst: $tekst = addslashes($_POST['tekst']);
Når du henter teksten ud igen skal backslashes fjernes, og \n laves om til <br />. Dog har jeg tit oplevet at PHP tilføjer for mange backslashes til teksten når den indsættes i databasen, derfor kan du bruge denne lille funktion:
function parse_db_text($text) { while(strpos($text, '\\') !== false) { $text = stripslashes($text); } $text = nl2br($text); # Hvis du ønsker at det ikke skal være muligt at skrive # HTML i din besked, så udkommentér denne linie: //$text = htmlentities($text); return $text; } $tekst = parse_db_text($tekst_fra_db);
addslashes er ikke nogen synderlig god sikkerhed mod sql-injection - men dog bedre end ingenting :)
I stedet for at tilføje slashes, der i forvejen bliver tilføjet af MySQL, kan det være en fordel at spørge til, hvad MySQL har tænkt sig at gøre ved strengen, når denne insættes i DB'en:
$tekst = !get_magic_quotes_gpc() ? addslashes($_POST["tekst"]) : $_POST["tekst"]; // Indsæt i DB her
- og det kan du naturligvis også gøre for at se, om det er nødvendigt at strippe slashes, når du henter fra DB
I skal alle have tak for hjælpen, ved ikke hvad vi gør med point??
Synes godt om
Slettet bruger
21. marts 2007 - 16:32#14
Olebole's kommentar: 21/03-2007 15:16:04 Olebole din post giver ingen som helst mening!
Olebole bruger eksempel til escaping af slashes: $tekst = !get_magic_quotes_gpc() ? addslashes($_POST["tekst"]) : $_POST["tekst"];
Paa dette tidspunkt er $tekst escapet med addslashes uanset om magic_quotes er slaaet til eller ej - hvilket vil sige samme sikkerhed. :(
Til information: Addslashes er KUN usikkert for multibyte strenge, det vil sige hvis du har sat charset din database til at haandtere f.eks. kinesiske tegn. Bruger du latin1 (latin1_swedish_ci) eller ligenende har det IKKE noget at sige! Men bruger din database kinesiske tegn saa brug mysql_escape_string() i stedet for.
Skifter du dynamisk charset i dine sql-kommandoer er dette dog heller ikke sikkert saa skal du "binde" dine sql parametre.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.