webForumDet fria alternativet

Få med hela URL:en vid inloggning?

ASP

20 svar · 430 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

Hej

Jag har gjort så att när man loggar in på min sida så ska man komma tillbaka till den sidan man loggade in ifrån, då inloggningsforumläret ligger på alla sidor (om mna inte redan är inloggad vill säga)

Kruxet är att om jag loggar in från en sida i forumet så får jag inte med hela URL:en. Jag får bara:

http://www.minsida.se/delay.asp?DELAY_TIME=3&DELAY_MESSAGE=Logging+in.<p>Please+wait...&REDIRECT_URL=/forumthreads.asp?id=5

När den igentligen skulle ha vart:
http://www.minsida.se/delay.asp?DELAY_TIME=3&DELAY_MESSAGE=Logging+in.<p>Please+wait...&REDIRECT_URL=/forumthreads.asp?id=5&topic=HTML+%26+CSS

Jag får alltså inte med det som ligger efter id=5... :(

Nån som har nått förlag på lösning?

Mvh

Medlem sedan juni 200032 967 inlägg
#2

Om du använder vanliga Request.Querystring("REDIRECT_URL") så blir det ju så, eftersom det som kommer efter & är en annan variabel.

Man får använda lite strängfunktioner för att klippa sönder den kompletta querystringen. Så här kan det se ut:

strQuerystring = Request.Querystring
strURL = right(strQuerystring, len(strQuerystring) - (instr(strQuerystring, "REDIRECT_URL") + 12))

Mvh,

Medlem sedan maj 2002560 inlägg
#3

Går det inte att sicka användaren vidare med

response.redirect request.servervariables("http_referer")

eller är det dumt att göra så?

Medlem sedan jan. 20022 440 inlägg
#4

Testa med

Server.transfer (Request.ServerVariables("HTTP_REFERER"))
Medlem sedan jan. 20011 213 inlägg
#5

Oki, jag ska testa de olika förslagen och se vad som fungerar...

Är det någon lösning som är att föredra?

mvh

Medlem sedan jan. 20011 213 inlägg
#6

Med @nders kod får jag:

Körningsfel i Microsoft VBScript fel '800a0005'

Ogiltigt proceduranrop eller argument.: 'right'

Det är raden som innehåller

strURL = right(strQuerystring, len(strQuerystring) - (instr(strQuerystring, "REDIRECT_URL") + 12))

som den pekar på...

De andra alternativen får jag:
Körningsfel i Microsoft VBScript fel '800a01b6'

Objektet stöder inte egenskapen eller metoden.: 'Server.transfer'

skumt...

Medlem sedan jan. 20011 213 inlägg
#7

Jag har en funktion som ser ut så här:

Function GetCurrentURL()

	strQueryString = Request.QueryString
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	strURL = strScriptName
	If strQueryString <> "" Then
		strURL = strURL & "?" & strQueryString
	End If

	GetCurrentURL = strURL
End Function
URL = GetCurrentURL()

som jag sendan anropar när jag skickar iväg användaren med

<form action="logincheck.asp?url=<%=URL%>" onSubmit="return verify()" method="post" name="login" id="login">

och hämtar upp URL med request.querystring på logincheck.asp...

det kanske är ett onödigt omständigt sätt att göra det på?

Mvh

//G8

Medlem sedan mars 20015 287 inlägg
#8

Då kan du väl lika gärna skriva om funktionen lite och sätta den på "mottagande" sida.

Function GetReferURL()
	strQueryString = Request.QueryString
	strURL = request.servervariables("http_referer")
	If strQueryString <> "" Then
		strURL = strURL & "?" & strQueryString
	End If
	GetReferURL = strURL
End Function

Borde väl fungera.
Samt då alltså skippa att skicka med adressen från sändande sida överhuvudtaget.

Medlem sedan jan. 20011 213 inlägg
#9

Det skulle jag ju kunna göra iofs, men får jag då med hela URL:en?

Ska testa när jag kommer hem ikväll...

mvh

//G8

Medlem sedan juni 200032 967 inlägg
#10

G8 skrev:

Med @nders kod får jag:

Körningsfel i Microsoft VBScript fel '800a0005'

Ogiltigt proceduranrop eller argument.: 'right'

Hade du med den första raden också?

strQuerystring = Request.Querystring

Den måste du ha med, annars har ju inte strQuerystring något värde.

Min kod skall fungera, jag testade den nämligen innan jag postade den.

mvh,

Medlem sedan jan. 20011 213 inlägg
#11

Jupp, jag har med strQuerystring = Request.Querystring, men inbäddat i den funktionen jag postade lite längre upp, men det ska la inte spela nån roll om den ligger i en funktion eller inte, strQuerystring ska ju få samma värde iaf...

Hela funktionen med @nders kod inbakat:

Function GetCurrentURL()

	strQuerystring = Request.Querystring
	strURL = right(strQuerystring, len(strQuerystring) - (instr(strQuerystring, "REDIRECT_URL") + 12)) 
	If strQueryString <> "" Then
		strURL = strURL & "?" & strQueryString
	End If

	GetCurrentURL = strURL
End Function
URL = GetCurrentURL()

Hittar du nått uppenbart fel?

mvh

//G8

Medlem sedan juni 200032 967 inlägg
#12

Vad är det tänkt att funktionen ska returnera? Nu returnerar den en himla massa, dels det du klippte ut ur den kompletta querystringen, och också den kompletta querystringen slängd på. Ska den göra det?

Nej, det borde inte spela någon roll att koden ligger i en funktion. Finns det något i querystringen nu när du testar då?

mvh

Medlem sedan jan. 20011 213 inlägg
#13

Får testa när jag kommit hem ikväll, I'll keep you posted...

Thanx

//G8

Medlem sedan jan. 20011 213 inlägg
#14

@nders, I hate to say it, men jag får det inte att funka... :(

Samma felmess som innan:

Körningsfel i Microsoft VBScript fel '800a0005' 

Ogiltigt proceduranrop eller argument.: 'right'

Kan det ha nått att göra med olika versioner av ASP, 2.0 - 3.0?

Vad är det tänkt att funktionen ska returnera?

Tanken är att den ska returnera URL:en på den sidan som man valde att logga in ifrån (ett loginformulär ligger på varje sida) och att man då ska skickas tillbaka till den sidan efter verifiering.

Så att om man t.ex. är inne i forumet på en tråd och väljer att logga in för att man vill besvara tråden, så ska man skickas tillbaka till samma tråd efter verifiering, så att man slipper bläddra igenom halva siten för att hitta tillbaka till samma ställe....

Blev det klarare nu?

mvh

Medlem sedan mars 20015 287 inlägg
#15

Törs man fråga vad det var som knasade med "min" kod?

<%
Function GetReferURL()
	strQueryString = Request.QueryString
	strURL = request.servervariables("http_referer")
	If strQueryString <> "" Then
		strURL = strURL & "?" & strQueryString
	End If
	GetReferURL = strURL
End Function

response.redirect GetReferURL()
%>

(På mottagande sida.)

Medlem sedan jan. 20011 213 inlägg
#16

usch, nu börjar jag bli riktigt trött på det här... :(

Känns som om jag har testat allt nu, och ingenting fungerar... hjärnsläpp?

Solbulle: med din funktion får jag bara ett tomt värde... :(

Här kommer login.asp (loginformuläret)

<%
Dim ckiUserName, ckiUserPass, ckiRedir, blnCheck, objConn, ckiUserId, strSQL, blnUserCheck, objRs, strQueryString, strServerName, strScriptName, strURL

ckiUserId = Request.Cookies("userid")
ckiUserName = Request.Cookies("username")
ckiUserPass = Request.Cookies("password")
ckiRedir = Request.Cookies("redir")
Function GetCurrentURL()

	strQueryString = Request.QueryString
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	strURL = strScriptName
	If strQueryString <> "" Then
		strURL = strURL & "?" & strQueryString
	End If

	GetCurrentURL = strURL
End Function
URL = GetCurrentURL()
If Len(ckiUserId) <> 0 Then
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databasen"
set rs = Server.CreateObject("adodb.Recordset")
stm ="SELECT autolog FROM Users WHERE (id =" & ckiUserId & ");"
set rs = Connection.Execute(STM)

rs.close
set rs = nothing
connection.close
set connection=nothing			
End If

If Len(ckiUserName) <> 0 Then	
	blnUserCheck = " checked"
End If
%>
	<table width="170" border="0" cellspacing="0" cellpadding="10">
              <tr> 
                <td> 
				  <form action="logincheck.asp?URL=<%=URL%>" onSubmit="return verify()" method="post" name="login" id="login">
        <table width="150" border="0" cellspacing="0" cellpadding="0" align="left">
                      <tr> 
						
            <td valign="top"> <img src="images/transp.gif" width="1" height="6"><br>
						  <b class=rubrik6>Log in!</b><br>
              			  <br>
                          Username: 
                          
              <input name="username" type="text" id="username2" style="width: 100%;" value="<%=ckiUserName%>" size="18" /> 
                          <br />
                          Password: 
                          
              <input name="password" type="password" id="password2" style="width: 100%;" value="<%=ckiUserPass%>" size="18" />
                          <br>
			  <input type="checkbox" name="rem" value="true" <%=blnUserCheck %> style="background-color: transparent;"> Remember me<br>
                          <br /> 
                          <input name="Submit" type="image" style="background-color: transparent; border: none;" src="images/login.gif" alt=" Log in " align="right" width="40" height="13" />
            </td>
                      </tr>
                    </table>
                  </form>
				</td>
              </tr>
            </table>

Och här är logincheck.asp (kontrollerar inloggningen)

<%
response.buffer=true
function fixa(fix)
fix = Replace(fix,"'","''")
fix = Replace(fix,"|","")

fixa = fix
end function
username = Request.Form("username")
password = Request.Form("password")
If Request.Form("rem") = "true" Then
	Response.Cookies("username") = username
	Response.Cookies("username").Expires = date() + 365
	Response.Cookies("password") = password
	Response.Cookies("password").Expires = date() + 365
End If
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databasen"

stm = "SELECT username, password, nick, inactive, id, tidszon, klubbid FROM Users WHERE username = '"& fixa(username) &"' AND password= '"&fixa(password)&"' AND Inactive = 0"

set rs = connection.execute(stm)
If NOT(Rs.BOF AND Rs.EOF) Then
	
session("userid") = rs("id")
session("user") = rs("id") & status
session("username") = rs("username")
session("nick") = rs("nick")
session("password") = rs("password")
session("klubbid") = rs("klubbid")
session("timezone") = CINT(rs("tidszon"))
URL = request.querystring("URL")
	MYMESSAGE = Server.URLEncode("Logging in.<p>Please wait...") 
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL="&URL&"") 
Else
	MYMESSAGE = Server.URLEncode("An error has accured.<p>Please check your username and password!<p>Please wait...<p>")
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=javascript:history.back(1)") 
End If

rs.close
set rs = nothing
connection.close
set connection = nothing
%>

Om nån skulle vilja vara så snäll och hjälpa mig fixa detta, jag blir galen!

mvh

//G8

Medlem sedan mars 20015 287 inlägg
#17

Var kollar du om liraren är inloggad? En session? På alla dina sidor menar jag.

Medlem sedan jan. 20011 213 inlägg
#18

jupp, med en session...

//G8

Medlem sedan juni 200032 967 inlägg
#19

G8 skrev:

Kan det ha nått att göra med olika versioner av ASP, 2.0 - 3.0?

Nej, det är sannolikt du som gjort något fel. :)

Tanken är att den ska returnera URL:en på den sidan som man valde att logga in ifrån (ett loginformulär ligger på varje sida) och att man då ska skickas tillbaka till den sidan efter verifiering.

Det borde ju vara absolut enklast att bara lägga url:en i ett hiddenfält i formuläret. Testa något liknande:

	<table width="170" border="0" cellspacing="0" cellpadding="10">
              <tr> 
                <td> 
				  <form action="logincheck.asp" onSubmit="return verify()" method="post" name="login" id="login">
        <table width="150" border="0" cellspacing="0" cellpadding="0" align="left">
                      <tr> 
						
            <td valign="top"> <img src="images/transp.gif" width="1" height="6"><br>
						  <b class=rubrik6>Log in!</b><br>
              			  <br>
                          Username: 
                          
              <input name="username" type="text" id="username2" style="width: 100%;" value="<%=ckiUserName%>" size="18" />
[b]<input type="hidden" name="URL" value="<%=URL%>">[/b]
                          <br />
                          Password: 
                          
              <input name="password" type="password" id="password2" style="width: 100%;" value="<%=ckiUserPass%>" size="18" />
                          <br>
			  <input type="checkbox" name="rem" value="true" <%=blnUserCheck %> style="background-color: transparent;"> Remember me<br>
                          <br /> 
                          <input name="Submit" type="image" style="background-color: transparent; border: none;" src="images/login.gif" alt=" Log in " align="right" width="40" height="13" />
            </td>
                      </tr>
                    </table>
                  </form>
				</td>
              </tr>
            </table>

Och sedan efter inloggningskontroll:

Response.Redirect Request.Form("url")

Mvh,

Medlem sedan juni 20019 024 inlägg
#20

Om du kör Server.UrlEncode() på URL:n så kommer den att fungera korrekt när du sedan hämtar den via QueryStrings.

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)