Avatar billede steen_hansen Forsker
08. november 2005 - 08:03 Der 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é :)
Avatar billede steen_hansen Forsker
08. november 2005 - 08:05 #1
Og så en Do While ... Loop
Avatar billede steen_hansen Forsker
08. november 2005 - 08:08 #2
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.
Avatar billede fennec Nybegynder
08. november 2005 - 08:27 #3
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
Avatar billede steen_hansen Forsker
08. november 2005 - 08:43 #4
Case Else behøver jeg ikke at have med, så vidt jeg ved? Brugeren kan f.eks. gå ind på

www.Navn1.MyDomain.dk
www.Navn2.MyDomain.dk
www.Navn3.MyDomain.dk
www.Navn4.MyDomain.dk

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:

dom = Request.ServerVariables("SERVER_NAME")

Select Case dom
    Case "www.name1.mydomain.dk"
        NyTekst = "Tekst1"
    Case "www.name2.mydomain.dk"
        NyTekst = "Tekst2"
End Select
%>

<%=NyTekst%>

Hvordan kan man inkludere en given menu, hvis men befinder sig på www.name2.mydomain.dk?
Avatar billede steen_hansen Forsker
08. november 2005 - 08:44 #5
dubdomænet = subdomænet :D
Avatar billede fennec Nybegynder
08. november 2005 - 08:58 #6
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.)
Avatar billede fennec Nybegynder
08. november 2005 - 09:00 #7
... 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")
Avatar billede steen_hansen Forsker
08. november 2005 - 09:14 #8
Fedest :)

Kan flette TekstX ind?

Case "www.name1.mydomain.dk"
  server.execute("menu.asp?menu=1")
  Tekst = "Tekst1"
Case "www.name2.mydomain.dk"
  server.execute("menu.asp?menu=2")
  Tekst = "Tekst2"

- Og hvis jeg skal benytte

menu.asp?menuID=1
menu.asp?menuID=2
menu.asp?menuID=3

osv., så skal det jo også sættes op i menu.asp. Gøres det igen med Case?
Avatar billede fennec Nybegynder
08. november 2005 - 09:51 #9
1. Ja, TekstX kan godt bruges der også.
2. Ja, eller med if/else (det giver det samme)

menu = request.querystring("menu")
if menu = "1" then
  'lav menu1
elseif menu = "2" then
  'lav menu2
else
  'defaut menu
end if
Avatar billede steen_hansen Forsker
08. november 2005 - 09:55 #10
fennec, bedste ven! Smid et svar. Hvis det giver nogle småproblemer, vender jeg tilbage, hvis det er ok? :)
Avatar billede fennec Nybegynder
08. november 2005 - 10:12 #11
Smid en besked herinde, også skal jeg nok være der (hvis jeg da ikke er optaget andet sted :o)

.o) <-- One Eyed Jack
Avatar billede steen_hansen Forsker
08. november 2005 - 10:16 #12
Takker mange gange :)

:o) <-- Two Eyed Ben
Avatar billede steen_hansen Forsker
08. november 2005 - 11:20 #13
Lige et hurtigt tillægsspørgsmål: Når jeg inkluderer på et subdomæne, skal jeg vel angive den fuldstændige sti til f.eks. menu.asp? Eksempel

/include/menu.asp <-- Virker kun på domænet


http://www.MyDomain.dk/includes/menu.asp

- Skal vel angives, hvis jeg befinder mig på adressen

http://www.SubDomain01.MyDomain.dk
Avatar billede steen_hansen Forsker
08. november 2005 - 11:26 #14
Hm, det kan ikke engang lade sig gøre? Jeg kan ikke inludere på tværs af subdomæner. Hvis jeg befinder mig på addressen:

www.MySubdomain.MyDomain.dk

- kan jeg ikke inkludere menu.asp:

<!-- #include virtual="http://www.MyDomain.dk/includes/menu.asp" -->
Avatar billede fennec Nybegynder
08. november 2005 - 11:29 #15
Ligger subdomæner ikke på samme server???
Avatar billede steen_hansen Forsker
08. november 2005 - 11:34 #16
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'?

Opretter et nyt spørgsmål, øjeblik ...
Avatar billede fennec Nybegynder
08. november 2005 - 11:44 #17
Du kan ikke inkludere filer med "http://..."

Du skal nok have lavet en virtuel mappe i alle dine subdomæner, som du smider includefilerne i.
Avatar billede steen_hansen Forsker
08. november 2005 - 11:45 #18
Men det vil så sige, at jeg skal rette i hvert enkelt dokument på hvert enkelt subdomæne?
Avatar billede steen_hansen Forsker
08. november 2005 - 11:55 #19
Eller jeg skal have oprettet en virtuel mappe (includes), som er virtuel på samtlige subdomæner?
Avatar billede fennec Nybegynder
08. november 2005 - 12:04 #20
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.
Avatar billede steen_hansen Forsker
08. november 2005 - 12:08 #21
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 :)
Avatar billede steen_hansen Forsker
08. november 2005 - 12:22 #22
Jeg har lige snakket med min host, og de kan (vil?) ikke lave virtuelle mapper.

Alle mine subdomæner er oprettede mapper på samme niveau som www-mappen (som er domænet). Kan man på en eller anden måde scripte sig ind i den mappe?

SubDoman1
SubDoman2
SubDoman3
www
Avatar billede steen_hansen Forsker
08. november 2005 - 12:23 #23
- så man fra et hvilket som helst subdomæne kan tilgå mappen "includes", som ligger i mappen www?
Avatar billede fennec Nybegynder
08. november 2005 - 12:29 #24
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 :(
Avatar billede steen_hansen Forsker
08. november 2005 - 12:30 #25
Ok, du har en pointe der. Men HVIS man vil oprette virtuelle mapper, så er det da lige til i IIS, er det ikke?
Avatar billede fennec Nybegynder
08. november 2005 - 12:35 #26
Jo, det tager max 30 sek. Kan tage et par sek længere, hvis man ikke kan finde den mappe der skal bruges :o)
Avatar billede steen_hansen Forsker
08. november 2005 - 12:37 #27
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?
Avatar billede fennec Nybegynder
08. november 2005 - 12:58 #28
Næsten :o)

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.
Avatar billede steen_hansen Forsker
08. november 2005 - 13:01 #29
Ok, og det burde kunne lade sig gøre på IIS fra version 5.0 og senere?
Avatar billede fennec Nybegynder
08. november 2005 - 13:31 #30
Man kan ihvertfald i 5.0 og 6.0 (dem bruger vi her i firmaet)
Avatar billede steen_hansen Forsker
08. november 2005 - 13:32 #31
Takker, fennec. Jeg vil lige høre dem, om det ikke er en fejltagelse :)
Avatar billede steen_hansen Forsker
08. november 2005 - 21:59 #32
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,
Avatar billede fennec Nybegynder
09. november 2005 - 08:26 #33
Det kender jeg ikke til (bruger aldrig FrontPage).
Avatar billede steen_hansen Forsker
09. november 2005 - 09:54 #34
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 :)
Avatar billede fennec Nybegynder
09. november 2005 - 10:09 #35
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.

Du skulle næsten prøve nogle af de mange editors der findes ude på nette. Tucows.com er et godt sted at finde dem (nogen er gratis):
http://tucows.com/downloads/Windows/DevelopmentWebAuthoring/HTMLEditors/

f.eks CoffeeCups HTML editor. Prøv at se screenshottet, så kan du se hvad jeg mener med farvekoder:
http://tucows.com/preview/388389
Avatar billede steen_hansen Forsker
09. november 2005 - 10:51 #36
Ok, ser spændende ud. Men kan de editorer lave valid kode?
Avatar billede fennec Nybegynder
09. november 2005 - 11:12 #37
Det er op til dig selv.

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)
Avatar billede steen_hansen Forsker
09. november 2005 - 11:50 #38
Takker, jeg vil prøve at tjekke dem :)
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