Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 21:56 Der er 30 kommentarer og
2 løsninger

asp-kode i databasefelt

Jeg har et TextArea i en form, hvor en bruger kan skrive en besked og submitte formen. Teksten gemmes i et memo-felt i en AccessDB og hentes frem igen. Hvis brugeren skal skrive et link, angives det i html: "Se lige dette <a href="http://www.eksperten.dk">site</a>. Det er ret godt." [Submit]

Denne besked vises så på skærmen til brugeren. Det virker fint - også med link. Problemet kommer, hvis brugeren ønsker at skrive asp-kode i feltet: "Jeg sidder kl. <%=Now()%> og skriver en besked til dig" [Submit]

Det gemmes ok i DB, men skrives ikke "rigtigt" på skærmen. Der kommer til at stå "Jeg sidder kl.  og skriver en besked til dig" - men hvis jeg ser i kildekoden står der faktisk: "Jeg sidder kl. <%=Now()%> og skriver en besked til dig" - men asp-koden vises ikke...

Mit spørgsmål er derfor - hvorledes får jeg gjort det muligt at gemme asp-kode i et databasefelt, så det eksekveres når det vises på skærmen? Giver spørgsmålet mening?

Mvh
/U.K.
Avatar billede thefatman Nybegynder
11. april 2004 - 22:19 #1
Jeg tror ikke det er muligt, fordi ASP kode køres serverside, og det gør dit database udtrak også, dvs. det som du har hentet fra din DB bliver ikke kørt fordi serveren har jo allerede kørt ASP scriptet inden <%=Now()%> blev en del af den kode.

Håber du forstå..
Avatar billede boris Mester
11. april 2004 - 22:23 #2
Du skal ændre specialtegnene til HTML-koder inden du skriver ud
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:23 #3
Forstår det godt, men kan man ikke gøre noget ved det? Eller er det en form for sikkerhedsforanstaltning?

Pseudo:
IF feltASPkode<>"" Then
Siden afvikles på serveren med indholdet af feltASPkode og præsenteres herefter for brugeren..

End IF
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:24 #4
>> Boris - hvad mener du?
Avatar billede boris Mester
11. april 2004 - 22:24 #5
F.eks. skal < ændres til &lt;
ellers tror browseren at det er tags
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:25 #6
Og hvad med %?
Avatar billede boris Mester
11. april 2004 - 22:26 #7
hvis jeg har forstået dig rigtigt...
Avatar billede boris Mester
11. april 2004 - 22:27 #8
% skal så vidt jeg husker ikke konverteres, men < > er klart HTML-tags for browseren
Avatar billede thesurfer Nybegynder
11. april 2004 - 22:28 #9
Hvis han laver < om til &lt; og > om til &lg;, osv.. kommer der til at stå:

Jeg sidder kl. <%=Now()%> og skriver en besked til dig

Der kommer *ikke* til at stå:
Jeg sidder kl. 11/04-2004 22:27:52 og skriver en besked til dig

Det var bare et eksempel..
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:30 #10
Sidstnævnte er PRÆCIS det jeg vil... Men det er måske ikke muligt? Heller ikke med brug af spidsfindigheder?
Avatar billede boris Mester
11. april 2004 - 22:30 #11
ok, forstået
Avatar billede boris Mester
11. april 2004 - 22:32 #12
Jeg er helt sikker på det må være muligt
Avatar billede thesurfer Nybegynder
11. april 2004 - 22:36 #13
Nu må vi lige vente og se, om eagleeye kommer forbi.. han ved nok om det kan lade sig gøre :-)
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:41 #14
Det er vel også forbundet med en vis risiko at lade ASP-kode blive tastet af brugeren og eksekveret af serveren? En 'ondsindet' bruger kunne jo finde på at skrive noget alvorlig kode: <% DeleteAllFiles %>? Eller hvad det nu hedder? Det er måske derfor det ikke er så ligetil?
Avatar billede boris Mester
11. april 2004 - 22:42 #15
Jeg giver foreløbig op.
Avatar billede boris Mester
11. april 2004 - 22:43 #16
En væmmelig bruger kunne spørge efter alle variabler i session
Avatar billede ugotabe_kidding Nybegynder
11. april 2004 - 22:45 #17
Hmm... Ja, det er noget tricky stads... Men tak for hjælpen hidtil.. Og så endda midt i påsken..
Avatar billede torben_brandt Nybegynder
12. april 2004 - 01:13 #18
Der er såmend en funktion indbygget, der kan eksekvere ASP-kode fra en tekst-streng. Den hedder Execute.

Den skal ikke forveksles med Server.Execute, der tager et filnavn.

Den kan dog (tilsyneladende) ikke klare en tekst-streng, der indeholder spring ud og ind af ASP-kode (<% og %>). Det er der dog lavet en work-around for her:
<URL:http://www.asp-faq.dk/kildekode/serverexecute.txt>

Som andre også er inde på, så giv endelig ikke brugere mulighed for at køre kode gennem funktionen. Det kan kun gå galt!

/Torben
Avatar billede boris Mester
12. april 2004 - 10:14 #19
Det lykkedes faktisk, takket være torben brandts forslag
Her er et lille udpluk
Feltet i databasen hedder Response.write "Gulerod"
Response.write "Gulerod"
sql = "SELECT * FROM taske"
Set objRS=Conn.Execute(sql)
If Not objRS.EOF Then
ord =  objRS("taske")
Execute ord
End If
objRS.Close

Udskriver:  Gulerod
Avatar billede boris Mester
12. april 2004 - 10:15 #20
Jeg skal lige huske at sige det kun er testet på Sun ASP, ikke Micro$oft
Avatar billede ugotabe_kidding Nybegynder
12. april 2004 - 12:01 #21
>> torben brandt: Det ser faktisk ret cool ud - jeg har bare et par enkelte spg.:
Jeg pusler med et meget basic CMS-system, hvor jeg vha en database og en række artikler, lader nogle adminbrugere vedligeholde teksten på frontend. Dette gøres i et admin-modul backend, hvor de kan lave/rette/slette artikler og kategorier. Frontend genereres så dynamisk afhængigt at adminbrugerens ønsker.

Jeg kunne dog godt tænke mig at opbygge backend på samme måde, således at jeg kan styre de forskellige backend-sider i selve backend. Jeg ville derfor gerne, direkte i et textarea kunne kopiere noget asp-kode ind, f.eks. en form eller Update-SQL el. lign.
Avatar billede ugotabe_kidding Nybegynder
12. april 2004 - 12:02 #22
Som så gemmes i databasen og køres, når siden vises og derved genererer enten formsiden eller gemmer brugerens input i databasen..
Avatar billede torben_brandt Nybegynder
12. april 2004 - 14:47 #23
Jeg er i tvivl om hvad du spørger om...
Avatar billede ugotabe_kidding Nybegynder
12. april 2004 - 15:09 #24
Jeg har en form for front- og backend template, som udgør overskrift, layout og tekstplacering. I tekstruden hentes data fra databasen, som er indtastet i adminmodulet. Det kan f.eks. være [Titel:] "Velkommen" og [Brødtekst:] "Denne tekst byder dig velkommen her på sitet"
Feltet [Titel] bliver så en del af navigeringsmenuen og brødteksten vises, når man klikker på menuobjektet [Titel]. So far so good.. Det virker fint.. Jeg kunne dog godt tænke mig at bygge backend op på samme måde - men så brødteksten bliver ASP-kode, der f.eks. genererer formfelter, hvori [Titel] og [Brødtekst] skal angives og en ny side, der håndterer disse input og opdaterer DB.
Derfor ønsker jeg mulighed for at man kan skrive ASP-kode i et textarea som gemmes i DB, men som udføres, når siden vises.

Pseudo:
[Titel:] "Velkommen til Admindelen"
[Brødtekst:] "Tillykke, du er logget ind kl. "& FormatDateTime(Now,vbShortTime) & "."

Brødteksten skal lagres i DB, men når velkomstsiden vises, skal tiden naturligvis vises og ikke Now.

Giver det mening?
Avatar billede torben_brandt Nybegynder
12. april 2004 - 15:23 #25
Hvis du ser på det link jeg gav tidligere, og ser hvordan det er bygget op [1].
Så du at den bearbejder en streng, der f.eks. indeholder
Klokken er <%= Now %>
og eksekverer den til
Klokken er 12/04-2004 15:18:00

Hvis det ikke skal eksekveres, så skal du lade databasen indeholde noget, som når det bliver eksekveret giver
Klokken er <%= Now %>
Det ville f.eks. være
Response.Write "Klokken er <%= Now %>"
Det virker dog bare ikke, idet %> altid bliver fortolket som slut-på-asp, så i stedet kan du lave det som dette [2]
Response.Write "Klokken er <" & "%= Now %" & ">"

/Torben

[1] Faktisk kan du med fordel omskrive den funktion i linket, så den i stedet for et filnavn taget strengen strContent som input.

[2] Afhængigt af hvordan resultatet skal præsenteres, så skal < og > måske også laves om til html-entiteter &lt; og &gt;
Avatar billede ugotabe_kidding Nybegynder
12. april 2004 - 16:00 #26
Arch... Mein lieber Got! Det virker jo bare super-perfekt ;o)

Dropper du et svar?

Mvh
U.K.
Avatar billede torben_brandt Nybegynder
12. april 2004 - 16:12 #27
Jeg er ligeglad med points...

/Torben
Avatar billede ugotabe_kidding Nybegynder
12. april 2004 - 16:15 #28
Okay... Takker i hvert fald for al din hjælp...

Fortsat go' påske...
Avatar billede boris Mester
12. april 2004 - 16:27 #29
Jeg takker også for inspirationen
Avatar billede thesurfer Nybegynder
13. april 2004 - 13:07 #30
ugotabe_kidding> Spm'et skal alligevel lukkes, hvis en løsning er fundet. Hvis du selv vil tage torben_brandts "del" af kagen, skal du lægge et svar.

De navne i boksen til venstre, som har medvirket til løsningen, skal markeres. Derefter klikker du på Accepter-knappen.
Husk rækkefølgen: Marker > Klik Accepter
Avatar billede ugotabe_kidding Nybegynder
13. april 2004 - 13:13 #31
>> thesurfer
Beklager.. Lukker naturligvis.. Var bare så opsat på at afprøve løsningen at jeg glemte alt det praktiske :o/
Avatar billede thesurfer Nybegynder
13. april 2004 - 13:19 #32
Ingen skade sket :-)
At få en mail fra spm'et, er en god ting :-)

- Mit indlæg var ikke negativt ment..
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
Kurser inden for grundlæggende programmering

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