19. juli 2005 - 02:44Der er
17 kommentarer og 1 løsning
Hente asp koder fra database
Jeg ved ikke om jeg ikke kan tænke rent her kl. 2.30 om natten, men måske der er en derude som han hjælpe mig med følgende:
Jeg har lavet et simpelt content management modul, som kører i ASP + MS SQL.
Jeg kunne godt tænke mig at jeg havde mulighed for at gemme ASP kommandoer i databasen, og efterfølgende kunne "tolke" disse sider (hente asp in i en asp side fra db):
Forestil jer følgende tekst gemt i databasen:
"Velkommen <% =Session("Brugernavn") %>"
Når jeg henter indholdet fra databasen ud på min side, vil jeg naturligvis gerne have den til at skrive:
Måske steen_hansen´s virker ? Problemet er jo at det ikke er ren asp du har gemt i databasen Hvis nu det var ren asp så burde du kunne evaluere det med Execute kommandoen altså tekst = "response.write ""Velkommen ""&Session(""Brugernavn"")" Execute(tekst) http://www.4guysfromrolla.com/webtech/030300-1.shtml
soes >> men du har da ret i at det er en mulighed at gemme udtrækket som en fil. Dog vil jeg mene at hvis man vil gemme alle sine informationer i en database frem for asp filer, blot for at hive det ud i asp filer alligevel, ja så kunne man ligeså godt have gemt det i en fil til at starte med :o)
Soes, jeg har også tænkt på at gemme den kode som hentes ud fra databasen som midlkertidig fil, og efterfølgende redirecte til asp filen.
Busschou, du har tildels ret, men i databasen er der bl.a. gemt en SiteTemplate, PageTemplate, samt typisk 10-20 content sektioner, som skal "sammensmeltes" til et site. Jeg mente ikke det var nødvendigt at gå i detaljer om hvad indholdet i databasen var, men mere om selve problematikken.
Soes, jeg kigger lige nærmere på Execute funktionen. Den har jeg ikke prøvet før. Jeg får muligvis et par spg. undervejs. Hvis det virker smider jeg et accept.
Det er helt genialt det du er kommet med, jeg har dog 2 spg. som jeg håber du kan hjælpe mig med.
1. Jeg har lavet dit script om til en function:
Function DecodeASP(SiteContent) Set re = New RegExp re.Global = True re.Pattern = "<%([^%]*)%\>" Set matches = re.Execute(SiteContent) oldpos = 1 For Each m In Matches pos = m.FirstIndex Response.Write Mid(SiteContent, oldpos, pos-oldpos+1) oldpos = pos + Len(m.Value)+1 script = Trim(m.SubMatches(0)) If Left(script, 1) = "=" Then script = "Response.Write " & Mid(script, 2) End If Execute script Next DecodeASP = Mid(SiteContent, oldpos) End Function
i linie 9 ( Response.Write Mid(SiteContent, oldpos, pos-oldpos+1) )
Hvad laver den linie, og hvordan får jeg den til at lade være med at udskrive noget? Er det noget med SiteContent = SiteContent & Mid(SiteContent, oldpos, pos-oldpos+1) i stedet?
2. Hvis jeg fx. skriver følgende: str = "<% g=""en var"" %\> mere tekst <% response.write ""g="" & g %\> slut " response.write DecodeASP(str)
Så skriver den rigtigt: mere tekst g=en var slut
Hvis jeg derimod lader indholdet komme fra en database: str = RS("Content") , hvor RS("Content") = <% g="en var" %\> mere tekst <% response.write "g=" & g %\>
så bliver outputtet på skærmen følgende: <% g="en var" %\> mere tekst <% response.write "g=" & g %\>
Hvorfor træder din funktion ikke rigtigt i kræft her?
At du ikke får indholdet af databasen til at virke, skyldes måden sluttagget er skrevet på: %\>
Når det kommer fra databasen, skal der ikke backslash på
Function DecodeASP(SiteContent) Dim final, re, pos, oldpos, script, output, matches, m
' final = slutprodukt final = ""
Set re = New RegExp re.Global = True re.Pattern = "<%([^%]*)%\>" Set matches = re.Execute(SiteContent) oldpos = 1 For Each m In matches pos = m.FirstIndex final = final & Mid(SiteContent, oldpos, pos-oldpos+1) oldpos = pos + Len(m.Value)+1 script = Trim(m.SubMatches(0)) If Left(script, 1) = "=" Then script = "Response.Write " & Mid(script, 2) End If
'-- Erstat Response.Write '-- så den gemmer i vores variabel, output '-- i stedet for at udskrive til klienten output = "" script = Replace(script, "response.write", "output = output & ", 1, -1, 1)
Det har jeg også overvejet, men det er meget rart at jeg direkte kan sidde og skrive ASP i min RichEditor, i tilfælde af form-submit eller lign. Sitet består kun af en asp fil. Resten er udelukkende database indhold der hentes ind.
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.