08. november 2005 - 08:03Der er
37 kommentarer og 1 løsning
Undersøg domæne
Jeg har indtil flere subdomains. Jeg vil gerne have lavet et script, som tjekker hvilket man befinder sig på, for derefter at udføre forskellige funktioner, som f.eks. hvilken menu, der skal inkluderes, og hvilken tekst der skal skrives ud et givent sted.
Jeg kunne forestille mig, at det skal laves nogenlunde i denne stil:
<% Dim strCurrentPage strCurrentPage = Request.ServerVariables( "SCRIPT_NAME" )
Function DetermineSubdomain Select Case Sub Case 0 SubDomainName = "Tekst 01" Case 1 SubDomainName = "Tekst 02" ........ ....... End Select
GetSubDomainName = SubDomainName
End Function %>
Men det er kun en fornemmelse. Håber du har en GOD idé :)
Det er noget rod, jeg har skrevet, men jeg håber du fanger idéen, og jeg håber du har nogle gode forslag til hvordan man laver det mest hensigtsmæssigt.
Du kan bruge: Request.ServerVariables("SERVER_NAME")
... til at hænte domænenavnet. Også laver du bare en select/case:
dom = Request.ServerVariables("SERVER_NAME") Select Case dom case "www.domæne1.dk" ..Gør noget case "www.domæne2.dk" ..Gør noget case else ..Ingen match (hvad gør du så?) end select
etc. Så der bliver ikke linket til noget, der ikke er der.
Afhængig af dubdomænet, skal der udskrives forskellige ting, eller inkluderes en bestemt menu. Hvis jeg skal skrive en bestemt tekst ud, afhængigt af hvilket subdomæne man befinder sig på, kunne jeg forestille mig noget lignende dette:
Hvordan har du din menu på nuværende tidspunkt?? Ligger den i en/flere includefiler??
Du kan evt bare includere dem: Select Case dom Case "www.name1.mydomain.dk" %> <!--#INCLUDE FILE ="menu1.asp" --> <% Case "www.name2.mydomain.dk" %> <!--#INCLUDE FILE ="menu2.asp" --> <% End Select
Eller du kan bruge execute funktionen, til at afvikle menufilen: Select Case dom Case "www.name1.mydomain.dk" server.execute("menu1.asp") Case "www.name2.mydomain.dk" server.execute("menu2.asp") End Select
Execute deler IKKE variabler med hoved dokumentet, så har du nogle querystrings der skal bruges, skal de med på url'en. Det samme gælder andre ASP variabler (databaseconnection osv.)
... querystrings kan også bruges så du ikke får så mange menufiler: Case "www.name1.mydomain.dk" server.execute("menu.asp?menu=1") Case "www.name2.mydomain.dk" server.execute("menu.asp?menu=2")
Jo, det gør de, og derfor kan jeg ikke se nogen logik. / må være roden af domænet. Hvis det er roden af subdomænet, burde jeg kunne angive den fuldstændige sti. Eller hva'?
Den mest korrekte løsning er at lave en mappe med de includefiler som er ens for alle subdomæner. Denne mappe sætter du så ind som en virtuel mappe (gøres i IIS), også skal du kun rette i filerne et sted hvis der er ændringer.
Ok, og kan jeg selv gøre det, eller skal jeg have min host til at gøre det? Jeg har lige forsøgt med mapping på mappen, men det har vist ikke noget med noget at gøre :)
Jo, men det er næppe tilladt, da det skaber er en af de værste sikkerhedsproblemer. En tilfældig bruger kan så slette hele drevet, og ikke kun hans egen mappe.
Vil de ikke lave en virtuel mappe, bliver du desværre nød til at kopiere includefilerne til de andre sits, også selv sørge for at holde dem opdateret, når du laver ændringer :(
Ok. Lige et sidste spørgsmål: Hvordan gør man? Er det ikke bare at højreklikke på mappen og vælge en eller anden egenskab? "Make this directory virtual" eller noegt i den stil?
Højreklik på domænet i IIS >> New >> Virtual Directory >> Skriv navnet på den virtuelle mappe >> Skriv stien til mappen eller "browse" den >> sæt tilladelser ("read" og "run scripts") >> "Finish"
Hvis den skal mappes i en af undermapperne, højreklikker man bare på den i IIS.
De er sq gået med til det. Men pludselig er der kommet nogle .... bullits ud for hver enkelt (samtlige) fil, og når jeg højrerklikker, kan jeg vælge "Check ud". Når jeg gør det, bliver den bullit lavet om til et hakket-af/OK-tegn. Hvad er meningen med det?
Jeg skal lige sige at jeg benytter FP til at tilgå dokumenterne med Notepad, så jeg kan redigere dokumenterne direkte på serveren (benytter ikke FP som editor). Og det er herinde, at jeg kan se de bullits/OK-tegn,
Ok, fandt ud af; at det er noget skrivebeskyttelse. Det må være sket i forbindelse med oprettelsen af den virtuelle mappe :)
Lille tip: Du kan sætte FP op til åbne dine dokumenter i Notepad. På den måde kan du redigere dine dokumenter direkte på serveren i Notepad, og samtidig slipper du for det crap, som FP genererer :)
Bruger HomeSite til at redigere mine sider i. Det er meget bedre end notepad, og har indbygget FTP, så man kan tilslutte andre sites. Desuden er der farvekoder indbygget som gør det nemmere at læse koden.
Det er i bund og grund en notepad, hvor der er indbygget farve koder. Editoere generere ikke noget kode selv, selvom de fleste kan gøre det, men den kode er næsten altid valid. Du skal altså stadig selv skrive koden, de hjælper dig bare med at overskue det.
Flere af dem har desuden indbygget attribut lister, så er du ved at lave en knap, får du en liste af alle de attributter, der er tilknyttet sådan en (type, name, onClick osv)
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.