Avatar billede madeindk Nybegynder
30. november 2005 - 20:54 Der er 40 kommentarer og
1 løsning

Ikke helt URL'en via request("url")

Hej eksperter!

Hvordan kan den være at min server kun udskriver "/PartyGallery/ViewParty.asp" når hele URLen faktisk er /PartyGallery/ViewParty.asp?ID=42&PictureID=62"

Nogen der kan hjælpe? :-)
Avatar billede softspot Forsker
30. november 2005 - 22:04 #1
Fordi den servervariabel (som de skriver på w3schools.com under dette link: http://www.w3schools.com/asp/coll_servervariables.asp):

"Returns the base portion of the URL".

Hvis du vil have fat i resten kan du i tilgift benytte request.querystring.

Tag evt. et kig på nogle af de andre servervariable, f.eks. PATH_INFO for at se om du ikke kan få en mere komplet adresse derfra...
Avatar billede madeindk Nybegynder
30. november 2005 - 22:06 #2
Hmm. Har faktisk fundet en anden løsning!

Men den udskriver det på følgende måde:
http://minside.dk/PartyGallery/ViewParty.asp?ID=42&PictureID=62

Kan man så ikke få den til at slette http://minside.dk egentlig? :-)
Avatar billede softspot Forsker
30. november 2005 - 22:09 #3
Den hurtige og beskidte:

url = replace(url, "http://minside.dk", "")
Avatar billede madeindk Nybegynder
30. november 2005 - 22:12 #4
Den erstatter ikke noget.
Avatar billede softspot Forsker
30. november 2005 - 22:18 #5
Hmmmmm... idet jeg går ud fra at du har udskiftet den streng der skal udskiftes med det rigtige domænenavn, så vil jeg da foreslå at du prøver denne version:

url = replace(url, "http://minside.dk", "",1,-1,vbTextCompare)

det bør fungere med denne replace (igen under antagelse af at url indeholder det du skrev i din kommentar fra 30/11-2005 22:06:22). Ellers må du være mere konkret med hvilke værdier du bruger...
Avatar billede madeindk Nybegynder
30. november 2005 - 22:20 #6
Jeg har gjort det på følgende måde:

<%
url = replace(url, "http://minside", "",1,-1,vbTextCompare)

redirectURL = request.servervariables("HTTP_REFERER")
%>

og så længere ned spørger jeg efter "url"
Avatar billede madeindk Nybegynder
30. november 2005 - 22:20 #7
HOV!

Jeg har gjort det på følgende måde:

<%
url = replace(url, "http://minside.dk", "",1,-1,vbTextCompare)

redirectURL = request.servervariables("HTTP_REFERER")
%>

og så længere ned spørger jeg efter "redirectURL"
Avatar billede softspot Forsker
30. november 2005 - 22:28 #8
...men den kode illustrerer ikke brugen af url. Hvordan kommer værdien ind i url i første omgang og hvor bliver den brugt...?
Avatar billede madeindk Nybegynder
30. november 2005 - 22:30 #9
Nej - det gør den ikke.
Det var det jeg ville ha' du skulle hjælpe mig med :-)

Den bliver brugt i en form.
Avatar billede softspot Forsker
30. november 2005 - 22:43 #10
OK, jeg opfattede det sådan at du allerede havde fundet en anden måde at fange den værdi og at du bare manglede en metode til at udskifte/fjerne protokol og domæne-delen af den streng...

Kan du så ikke lige definere hvad problemet er pt.? :)
Avatar billede madeindk Nybegynder
30. november 2005 - 22:54 #11
At fjerne http://minside.dk fra redirectURL :-)
Avatar billede eagleeye Praktikant
30. november 2005 - 23:47 #12
Prøv sådan her:

<%
redirectURL = request.servervariables("HTTP_REFERER")

redirectURL = replace(redirectURL, "http://minside.dk", "",1,-1,vbTextCompare)

%>
Avatar billede softspot Forsker
30. november 2005 - 23:48 #13
Ja, du skal naturligvis have en værdi i variablen inden du kan udskifte noget fra den :)
Avatar billede madeindk Nybegynder
01. december 2005 - 07:53 #14
Det virker!
I må gerne begge ligge et svar (eagleeye og softspot) da jeg begge synes i har givet en god hjælp.

Men hvordan får jeg så den både fjerner http://minside.dk og http://www.minside.dk ?
Avatar billede softspot Forsker
01. december 2005 - 07:56 #15
<%
redirectURL = request.servervariables("HTTP_REFERER")
redirectURL = replace(redirectURL, "http://minside.dk", "",1,-1,vbTextCompare)
redirectURL = replace(redirectURL, "http://www.minside.dk", "",1,-1,vbTextCompare)
%>
Avatar billede madeindk Nybegynder
01. december 2005 - 07:59 #16
Det virker faktisk ikke :(
Den fjerner bare hele redirectURL.
Avatar billede softspot Forsker
01. december 2005 - 08:03 #17
Er du sikker på at der er noget indhold i request.servervariables("HTTP_REFERER")?

Det kan godt være at den er tom, hvis f.eks. siden kaldes fra adressebaren...
Avatar billede madeindk Nybegynder
01. december 2005 - 08:07 #18
Den er faktisk tom!
Hvordan kan det være?

Der skal jo hele tiden stå den URL man forsøgte at komme frem til.
Avatar billede softspot Forsker
01. december 2005 - 08:09 #19
Nej, HTTP_REFERER er den adresse siden bliver refereret fra (referer = den der refererer)...
Avatar billede softspot Forsker
01. december 2005 - 08:10 #20
...eller måske misforstod jeg hvad du mente. Hvorom alt er så er det interessant hvordan du kaldte siden da du testede om det fungerede...? :)
Avatar billede madeindk Nybegynder
01. december 2005 - 08:11 #21
Arh ok.
Det er da også rigtigt.

Men så er der vel egentlig ikke rigtig nogen anden løsning?
Men de har bare denne her funktion på www.arto.dk

Som du kan se her: http://www.arto.dk/brugere/login/default.asp?destination=http://www.arto.dk/net/clubs/ClubInfo.aspx?id=799&TabPage=Forside&TabContent=ApplyClub&menudestination=

Der finder den også ID og det hele :-)
Avatar billede softspot Forsker
01. december 2005 - 08:16 #22
Naturligvis er den et alternativ :)

Det er bare et spørgsmål om hvormeget energi du vil investere (og hvad det rent faktisk er du vil opnå). Hvis det er et spørgsmål om at man skal kunne kalde en side, som spørger efter login, hvis man ikke er logget på og derefter viser siden hvis login er ok, så kan du med fordel benytte server.transer til dette formål. Det kræver bare en lidt anden kodestruktur...
Avatar billede madeindk Nybegynder
01. december 2005 - 08:19 #23
Det er præcis det jeg gerne vil :-)

Server.Transfer?
Hvad er det? Og er det det de bruger på Arto eller?
Avatar billede softspot Forsker
01. december 2005 - 08:34 #24
Aner ikke om det er noget de bruger på arto, men noget kunne tyde på at de ikke gør med den bunke af information de har i deres adresse... :)

Anyway! Det du skal gøre er at starte alle dine sider med at checke om brugeren er logger på (altså alle dem der skal sikres med password). Hvis brugeren ikke er logget på, kalder du server transfer til din loginside, hvor du viser loginformularen. Når brugeren har indtastet sine logininformationer poster du tilbage til siden selv med

Response.Redirect Request.ServerVariables("SCRIPT_NAME")

og det skal gøres uanset om brugeren har indtastet korrekt information eller ej, for siden sikrer at loginformularen bliver vist igen hvis login ikke er korrekt.

Et simpelt eksempel kunne se således ud:

Den beskyttede side, lad os kalde den

hemmelig.asp:
---------------

<%
if session("auth")&"" = "" then
  server.transfer "login.asp"
end if
%>
<html><head><title>Hemmelig side</title></head>
<body>Denne side er meget hemmelig</body></html>


og den side som viser loginformularen, lad os bare kalde den

login.asp:
------------

<%
if request.servervariables("REQUST_METHOD") = "POST" then
  if request.form("brugernavn") = "james" and request.form("adgangskode") = "bond" then
    session("auth") = "yes"
  end if
  response.redirect request.servervariables("SCRIPT_NAME")
end if
%>
<html><head><title>Login på hemmelig side</title></head>
<body>
<form method="post" action="<%=request.servervariables("SCRIPT_NAME")%>">
  Brugernavn:<br>
  <input type="text" name="brugenavn"><br>
  Adgangskode:<br>
  <input type="password" name="adgangskode"><br>
  <input type="submit" name="logon" value="log på"><br>
</form>
</body></html>


Prøv at tage disse to sider og gem dem i hver sin fil med de navne jeg har angivet (de skal naturligvis køres igennem din webserver, f.eks. localhost, for at fungere).
Avatar billede madeindk Nybegynder
01. december 2005 - 08:42 #25
Og hvad skulle den så gøre?

Du kan se scriptet på http://myparty.sykonia.dk
Avatar billede madeindk Nybegynder
01. december 2005 - 08:42 #26
Nårh nej, der er kode på så det kan du ikke!
Men jeg kan ikke rigtig se hvad den gør og hvad det skal gøre godt for? :-)
Avatar billede softspot Forsker
01. december 2005 - 08:44 #27
Tanken var jo at den skulle gøre det som du efterspørger... Har du forsøgt at køre koden (du skal kalde hemmelig.asp i din browsers adressebar) og indtaste james og bond i brugernavn hhv. adgangskode...?
Avatar billede softspot Forsker
01. december 2005 - 08:46 #28
... jeg kan i øvrugt ikke komme på det link du har lagt, da det er beskyttet af windows password-check.
Avatar billede madeindk Nybegynder
01. december 2005 - 08:47 #29
Ja har testet det :-)
Har også indtastet james i brugernavn og bond i adgangkode.

Men efter jeg har gjort det sker der ikke så meget?
Avatar billede softspot Forsker
01. december 2005 - 08:49 #30
Kommer du tilbage til loginformularen, eller hvordan skal det forstås?
Avatar billede madeindk Nybegynder
01. december 2005 - 08:51 #31
Ja - jeg kommer tilbage til log ind siden, hele tiden.
Avatar billede eagleeye Praktikant
01. december 2005 - 09:03 #32
Giv du bare point til softspot:

Der er en lille fejl i det script input feltet hedder "brugenavn" og man henter fra "brugernavn" så prøv at rette:

<input type="text" name="brugenavn"><br>

Til:

<input type="text" name="brugernavn"><br>
Avatar billede madeindk Nybegynder
01. december 2005 - 09:04 #33
Der sker stadig ikke en skid :(
Avatar billede softspot Forsker
01. december 2005 - 09:08 #34
eagleeye har ret, der var en stavefejl. Har lige testet koden. Den fungerende kode (på mit system) ser således ud:

<%@ language="vbscript" %>
<%
if request.QueryString("logoff") <> "" then
  session("auth") = ""
end if

if (session("auth")&"") = "" then
  server.transfer "login.asp"
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>hemmelig</title>
  </head>
  <body>
    Denne side er meget hemmelig.<br>
    <a href="?logoff=1">Log af igen!</a>
  </body>
</html>

og loginsiden:

<%@ language="vbscript" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
if lcase(request.ServerVariables("REQUEST_METHOD")) = "post" then
  if request.form("brugernavn") = "james" and request.form("adgangskode") = "bond" then
    session("auth") = "yes"
  end if
  response.redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<html>
<head>
  <title>Login på hemmelig side</title>
</head>
<body>
  <%=request.ServerVariables("REQUEST_METHOD")%><br>
  <form action="" method="post">
    Brugernavn:<br>
    <input type="text" name="brugernavn"><br>
    Adgangskode:<br>
    <input type="password" name="adgangskode"><br>
    <input type="submit" name="logon" value="log på"><br>
  </form>
</body>
</html>
Avatar billede madeindk Nybegynder
01. december 2005 - 09:10 #35
Sådan - så virker det :-)

Men hvad skal jeg så gøre nu?
Avatar billede eagleeye Praktikant
01. december 2005 - 09:13 #36
men hvis du har sådan nogle querystring:
http://minside.dk/PartyGallery/ViewParty.asp?ID=42&PictureID=62

Så skal de føres med over eller går de tabt i redirect'en så det skal vist være:
response.redirect Request.ServerVariables("SCRIPT_NAME") & "?" & request.querystring
Avatar billede softspot Forsker
01. december 2005 - 09:14 #37
De sider der skal beskyttes skal som udgangspunkt have denne kode i toppen af siden:

<%@ language="vbscript" %>
<%
if (session("auth")&"") = "" then
  server.transfer "login.asp"
end if
%>


og så skal du naturligvis lave dit logincheck lidt mere dynamisk (f.eks. lægge brugeroplysninger i en database).
Avatar billede softspot Forsker
01. december 2005 - 09:15 #38
Jeps! Det som eagleeye lige sagde (ud over det jeg sagde) ;-)
Avatar billede madeindk Nybegynder
01. december 2005 - 09:19 #39
Ja - tak for i hjælpen i to!
Det virker nu, det var dejligt :-)

I kunne måske lige kigge forbi mit næste spg?
http://www.exp.dk/spm/668795

På forhånd tak.
Smider du et svar eagleeye?
Avatar billede eagleeye Praktikant
01. december 2005 - 09:25 #40
Jeg syntes du skal give point til softspot, det er jo softspot som er kommet med løsningerne :)
Avatar billede softspot Forsker
04. juni 2006 - 00:05 #41
Tak for point :)
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