Avatar billede DiscSunshine Nybegynder
14. oktober 2012 - 03:30 Der er 5 kommentarer og
1 løsning

Hvordan sikre jeg med html tagen undtagen <br/>

Hej Experter

jeg er ved at lave en famillige side og skal lave en form som sender til databasen alt det ved jeg godt hvordan man laver

men være gang folk laver et linje skift har jeg sat
nl2br()

og når jeg så henter det virker det ok men så kan folk også lave rod med fx <h1>

så jeg prøvede
htmlentities()

men så også mine linje skift kom fram med
text <br/> text
i stedet for at lave linje skiftet for jeg har jo lige sagt til den at den skal skive alt ud og html ikke må virke

så hvordan gør jeg sådan at min side godt kan skive <br/> men ikke alle andre html tagn

ved ikke lige hvad jeg skal lægge den under men det er jo lidt med php og mysql så den skiver det rigtig ud
Avatar billede stalle Nybegynder
14. oktober 2012 - 09:24 #1
Du skal/kan bruge "strip_tags()"



$besked = strip_tags($besked);
$besked = nl2br($besked);


Så bliver alle HTML tags fjernet til at starte med.
Efterfølgende laver du nl2br()
Avatar billede DiscSunshine Nybegynder
14. oktober 2012 - 12:00 #2
Nu har jeg gort sådan her

$opslag = mysql_real_escape_string(strip_tags($_POST['opslag-væg-bruger']));
$opslag_br = nl2br($opslag);
if ($opslag) {
mysql_query("INSERT INTO opslag VALUES('','$id_login','$id','$opslag_br')");
echo'<meta http-equiv="refresh" content="0">';

men ja den fjerner alt men også når jeg laver linje skift det vil sige den gider heller ikke sette <br/> på
Avatar billede olebole Juniormester
14. oktober 2012 - 16:40 #3
<ole>

For det første skal du ikke escape HTML, når du indsætter i databasen. Faktisk burde der slet ikke indsættes HTML i databasen - som jo er til data  *o)

Indsætter du alligevel HTML, bør det escapes, når du henter data fra databasen - ikke når du indsætter.

Derudover er mysql_real_escape_string ikke sikker. I det hele taget er det gamle MySQL-API forældet og usikkert, hvorfor man i dag er gået over til MySQLI eller PDO.

/mvh
</bole>
Avatar billede DiscSunshine Nybegynder
15. oktober 2012 - 12:07 #4
Mange tak nu virker det
Avatar billede DiscSunshine Nybegynder
15. oktober 2012 - 12:08 #5
hvis i nu lægger et svar være vil i så ikke dele pointne??
Avatar billede olebole Juniormester
15. oktober 2012 - 15:07 #6
Ellers tak, jeg samler ikke point  =)

Som sagt bør du skifte API til noget tidssvarende. Den kode, du skriver, er dybt forældet og usikker. Prøv f.eks. at kikke på denne guide om prepared statements under MySQLI
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester