Just nu i M3-nätverket
Gå till innehåll

Exekvera kod?


Cariad

Rekommendera Poster

Hej,

Jag undrar om det är möjligt att på något sätt få ASP att exekvera en kodbit jag har sparad i en databas, alltså inte från en fil, utan ren HTML-kod med <% %>-satser lite här och där?

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

Japp det går bra!!

 

Kommandot heter Eval och finns att läsa mer om på följande sida:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcteval.asp

 

<% 
sDate = "now()"
response.write  Eval(sDate) 
%>

 

- M

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Ja, det fungerar ju bra om man bara har ASP-kod. Men i detta fall har jag en variabel som innehåller en ASP-sida. Innehållet i strSida:

<html>
<body>
<%= text %>
</body>
</html>

 

I detta fall fungerar ju inte eval(). Finns det något sätt att lösa detta?

 

Länk till kommentar
Dela på andra webbplatser

Tjena!

 

Om asp-koden är så begränsad som i ditt exempel, är det nog bara att parsa texten och köra eval på allt som finns mellan <% %> (och byta ut likamedtecknet mot Response.Write)... Men har man mer komplicerad kod, med funktioner och annat, så misstänker jag att det kan bli komplicerat(?)...

 

/ Johan

 

Länk till kommentar
Dela på andra webbplatser

Ja, koden är faktiskt aningens mer komplicerad. Det var bara ett exempel.

 

I PHP kan man använda sig av eval()-funktionen, om man stoppar in ?> först (vilket är detsamma som %> i ASP):

<?php
eval("?><html><? echo 'text'; ?></html>");
?>

 

Jag har testat lite oliak varianter av detta med ASP, men det fungerar inte...

Det måste ju gå på något sätt. Hur ska man annars kunna utveckla databasdrivna applikationer, där skripten är dynamiska och sparas i en tabell?

 

Länk till kommentar
Dela på andra webbplatser

Varför uppstår behovet att lagra ASP sidor i databasen ?? Låter som ett dåligt sätt att planera sin sida på.

 

Ta en titt på Server.Execute för att köra andra ASP sidor från ditt script och även Server.Transfer för att helt överföra exekveringen till ett annat script (utan rundgång till användaren).

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh
Hur ska man annars kunna utveckla databasdrivna applikationer, där skripten är dynamiska och sparas i en tabell?

 

Har nog aldrig stött på en site där man har behövet att använda sig av dynamiskt skapa script.

 

Och skulle jag göra det skulle jag som XyZz skriver antingen använda mig av ASP's execute och transfer funktioner. Möjligvis kan man skapa om ASP sidan utifrån databasen innehåll också men det verkar lite overkill.

 

- M

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Jovisst är det ett dåligt sätt att planera på, men det underlättar och spar tid i början av utvecklingsarbetet. Sedan kan man ju löra det på lite andra sätt, med replace()-funtioner osv.

 

Om man tänker sig att man har varje sida sparad i en tabell (text alltså). Sen vill man på en sida på webbplatsen till exempel lägga in nyheter mitt i en text. Då måste man ju på något sätt anropa en nyhetsfuntion från sidan.

 

Om man då kan få ASP att exekvera hela denna textsträng som om det vore en hel ASP-sida, så skulle man ju kunna lösa det utan replace().

 

Men nu har jag gjort precis som de har här på e-forum, nämligen använd mig av märkord som ex. [nyhetslista] för att infoga en lista med nyheter.

 

Problemet med detta är att man då måste utveckla en reguljär ersättningsfunktion för varje nytt märkord man lägger in (de kan ju behöva ha argument också: [nyhetslista antal=3" storlek="liten] ). Detta tar ju ett tag, och om man snabbt vill ha upp en fungerande sida så skulle det som sagt underlätt något otroligt om det gick att lösa.

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

Mitt tips blir nog så fall att skapa en ASP sida utav texten från databasen och ge den ett unikt nummer, sedan kör du en server.execute på den sidan.

 

Inte speciellt snabbt men borde lösa det du efterfrågar

 

- M

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...