Gå til innhold

Anbefalte innlegg

Skal lage en blogg i JSP. Men det er to problem.

 

Det første er utskrift av innleggene og kommentarene. De blir lagt inn i databasen med avsnitt og innrykk, slik de ble skrevet inn av brukere. Når jeg så skal skrive dem ut ved hjelp av JSP kommer alt som en sammenhengende tekstbolk. Det blir fryktelig uoversiktlig.

Teksten legges inn i et textarea i et HTML-skjema. I databasen, som bruker mySQL er den lagret som text. Ellers lagrer JSP hele greia som String før den skriver d ut på sida. Hva er feil?

Problem nr. 2 er at innleggene og kommentarene ikke kan inneholde '. Dette kommer i konflikt med mySQLs tegnsetting. Hvordan unngår jeg d?

Lenke til kommentar
Videoannonse
Annonse

Ren tekst blir ikke automatisk HTML. Dvs to linjeskift som skiller to avsnitt i ren tekst blir ikke automatisk til </p><p> (slutt på forrige avsnitt, begynn på neste). Du må selv tolke teksten og generere de nødvendige HTML-kodene for at teksten skal bli vist korrekt på nettsiden. Kan godt hende det finnes noen ferdige biblioteker for dette, uten at jeg kjenner til noen.

 

Det at ' kommer i konflikt med MySQL tyder på at du bruker SQL-injection. Kan godt hende jeg tolker deg feil, men uansett er bruk av SQL-injection en stor sikkerhetsrisiko og bør unngås. Da skal man også slippe å måtte ta hensyn til '. Si ifra hvis jeg tar feil.

Endret av balletryne
Lenke til kommentar

Ok. Jeg skal altså tolke teksten. Det vil si putte på <br/>, <p> og slike ting der det skal være. Men når skal jeg gjøre det? Etter jeg har tatt det ut av mySQL med JSP? Hvordan gjør jeg d? Hvordan vet jeg hvor og hvilke slike merkelapper som skal genereres?

 

Når et gjelder ' så vet jeg ikke om jeg bruker injections, fordi jeg ikke vet hva det er. Hvordan jeg i så fall unngår det er derfor også ukjent.

 

Unnskyld hvis det er grunnleggende ting innen programmering, men jeg er nybegynner og prøver å lære

Lenke til kommentar

Dersom du legger <pre>-tagger rundt hele teksten kommer den til å bli printet på samme måte som den ble skrevet inn.

 

Du "bruker" nok ikke SQL injections, ettersom dette er en angrepsteknikk som er mye brukt ovenfor nettsider som tar ibruk databaser, men koden din er sårbar ovenfor SQL injections.

Lenke til kommentar
Dersom du legger <pre>-tagger rundt hele teksten kommer den til å bli printet på samme måte som den ble skrevet inn.

 

Du "bruker" nok ikke SQL injections, ettersom dette er en angrepsteknikk som er mye brukt ovenfor nettsider som tar ibruk databaser, men koden din er sårbar ovenfor SQL injections.

7754361[/snapback]

 

Når skal jeg legge inn <pre>-taggene? Før den legges inn i databasen? Da får jeg ikke skiftet font på skriften. I alle fall får ikke jeg det til.

Lenke til kommentar

I utgangspunktet spiller det ingen rolle om du legger til HTML-taggene før eller etter tekstene legges i databasen, så lenge de blir vist slik du ønsker det når de blir en del av nettsiden. Databasen er jo bare et midlertidig lagringspunkt uansett. Personlig ville jeg gjort det etter at tekstene er hentet ut fra databasen ettersom man da bevarer tekstene i sine opprinnelige former i databasen.

 

Et første skritt for å få avsnitt: Trim teksten og legg til "<p>" på begynnelsen av teksten og "</p>" på slutten av teksten. Så, bytt ut alle doble linjeskift med "</p><p>". Bruker du regulære utrykk kan du f.eks. bruke /((?:[ \t]*\n){2,}[ \t]*)/ til å finne all white space som inneholder to eller fler linjeskift, og så erstatte disse med "</p><p>". Da unngår du eventuelle tomme avsnitt.

Lenke til kommentar

et annet hot tips er å bytte ut linjeskift med <br> på denne måten:

 

String tekst = request.getParameter("tekst");
String cr = System.getProperty("line.separator");
tekst = tekst.replaceAll(cr, "<br />");

 

bruken av System.getProperty("line.separator"); gjør at dette vil funke på alle OS (så vidt jeg vet :hmm: )

 

håper dette hjelper deg litt på vei :thumbup:

Endret av Ze0s
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...