webForumDet fria alternativet

inloggningskontroll

ASP

8 svar · 488 visningar · startad av syrolis

Medlem sedan feb. 2003107 inlägg
Frågan#1

Använder Gruvsjös loginmulti där man som användare loggar in på en sida (admin.asp) och kan läsa om allsjöns smått och gott som användare.
Men om jag lägger dit en länk som länkar till en annan sida (historia.asp) så går ju den sidan att nås av obehörig.

Hur skriver jag ett script till historia.asp för att kontrollera att man fortfarande är inloggad via admin.asp och att man skickas vidare till ejmedlem.asp om man försöker nå sidan utan att logga in?

Tyvärr är jag urdålig på ASP (använder bara färdiga script) så jag behöver färdig kod.
Tacksam för alla tips
Sylvia


<%Response.Buffer = "True"
Session.lcid = 1053

Admin1 = "admin"
Admin2 = "admin"

db = Server.MapPath("db/databas.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

If Request.Querystring("losen") = "nej"  Then 
  mess = "alert('Fel lösenord!');return true;"
End If

If Request.Querystring("anv") = "nej"  Then 
  mess = "alert('Användaren finns inte!');return true;"
End If

If Request.Querystring("user") = "ja"  Then 
  mess = "alert('Ny användare är nu tillagd!');return true;"
End If

If Request.Querystring("andrauser") = "ja"  Then 
  mess = "alert('Användaren är nu ändrad!');return true;"
End If

If Request.Querystring("deluser") = "ja"  Then 
  mess = "alert('Användaren är nu borttagen!');return true;"
End If

If Request.Querystring("busy") = "ja"  Then 
  mess = "alert('Användarnamnet är upptaget!');return true;"
End If%>

<html>
<head>
<title>Login multi</title>
<link rel="stylesheet" href="stil.css" type="text/css">
<script src="js/js.js"></script>
</head>

<body bgcolor="#f0f0f0" OnLoad="<%=mess%>">

<%If Request.Querystring("visa")="" Then%>

<table width="400">
   <tr>
      <td colspan="2"><b>Logga in!</b></td>
   </tr>
   <tr>
      <td colspan="2"><img src="bilder/dot1.gif"></td>
   </tr>
   <form name="loggain" method="post" action="admin.asp?visa=check">
   <tr>
      <td>Anvnamn:</td><td><input type="text" name="admin1" size="35" value="<%=Request.Cookies("user") %>"></td>
   </tr>
   <tr>
      <td>Lösenord:</td><td><input type="password" name="admin2" size="35"></td>
   </tr>
   <tr>
      <td>Typ av inloggning:</td>
      <td>
        <select name="val" style="width:95">
           <option value="admin">Admin
           <option value="users">Användare
        </select>
      </td>
   </tr>
   <tr>
      <td colspan="2"><img src="bilder/dot1.gif"></td>
   </tr>
   <tr>
      <td>&nbsp;</td><td><input type="submit" value="Logga in"></td>
   </tr>
   </form>
</table>

<%End If

'############################################################################################################
'-----------------------------------KOLLAR VILKEN SORTS INLOGGNING MAN ANVÄNT OCH SKICKAR DIG VIDARE----------------------------------------------
'############################################################################################################

If Request.Querystring("visa")="check" Then

  If Request.Form("val") = "admin" Then

    If Request.Form("admin1") = Admin1 AND Request.Form("admin2") = Admin2 Then
       admin="ok"
    Else
       Response.Redirect "admin.asp?losen=nej" 	
    End If

    If admin="ok" Then
       Session("admin") = "ok"
       Session("user") = Request.Form("admin1")
       Session.TimeOut = 40
       Response.Redirect "admin.asp?visa=inne"
    End If

  ElseIf Request.Form("val") = "users" Then

    Set RecSet=Conn.Execute("Select * From users where anvnamn='" & Request.Form("admin1") & "'")
    Response.Cookies("user") = Request.Form("user")

    If Not RecSet.EOF Then
       If Request.Form("admin2") = RecSet("losen") Then
            login="ok" 
       Else
          Response.Redirect "admin.asp?losen=nej"	
       End If
    Else
          Response.Redirect "admin.asp?anv=nej"	
    End If

    If login="ok" Then
       Session("login") = "ok"
       Session("user") = Request.Form("admin1")
       Session.TimeOut = 40
       Response.Redirect "admin.asp?visa=inne&user=" & Request.Form("admin1")
    End If
  End If

End If

'############################################################################################################
'-------------------INLOGGAD OCH HÄR KAN MAN LADDA UPP OCH LÄGGA TILL, ÄNDRA OCH TA BORT BILDER OCH ANVÄNDARE------------------------------
'############################################################################################################

If Request.Querystring("visa")= "inne" And Session("admin") = "ok" Then%>
<table width="400">
<tr>
   <td><b><a href="admin.asp?visa=users">Användare</a> &nbsp; <a href="javascript:Logut('admin.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
   <td>Inloggad som admin</td>
</tr>
</table>

<%End If

If Request.Querystring("visa")= "inne" And Session("login") = "ok" Then%>
<table width="400">
<tr>
   <td><b><a href="javascript:Logut('admin.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
   <td>Inloggad som användare</td>
</tr>
</table>

<%End If
Medlem sedan jan. 2003247 inlägg
#2

Du har delen längst ner på koden som kollar om du är inloggad. Har inte gått igenom koden till fullo men Session("login") = "ok" kollar om Sessionen för inloggningen är skapad.

Dvs på historia.asp kan du ha en koll likt den i slutet av koden:

If Session("login") = "ok" Then%>
<table width="400">
<tr>
<td><b><a href="java script:Logut('admin.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
<td>Inloggad som användare</td>
</tr>
</table>

<%
else
%>
Du är inte inloggat, alternativt skicka användaren till en annan sida.
<%
end if
%>

// edit: ingen snygg kod men hoppas du förstår.

Medlem sedan feb. 2003107 inlägg
#3

Tack nu är svaret en god bit på väg men inte helt klart!

Överst på sidan historia.asp står nu
"du är inte inloggad...."
Men all information på sidan historia.asp syns ändå.

Hur gör jag själva "redirecten" till "ejmedlem.asp" så inte informationen på historia.asp syns?

Via inloggningen admin.asp och vidare till historia.asp så står det högst upp "Inloggad som användare" precis som jag ville det med sidan synlig.

Medlem sedan feb. 2003107 inlägg
#4

Hm...

Nu har jag (med hjälp ovan) gjort en kodsnutt till "historia.asp" men det fungerar inte riktigt ändå.

Nedan script skickar iväg en obehörig som hamnar på "historia.asp" (avsiktligt eller oavsiktligt) till "ejmedlem.asp" så det blir helt ok :)

MEN som inloggad via "admin.asp" och när man klickar på länken historia skickas man OCKSÅ till "ejmedlem.asp och det var ju verkligen inte meningen eftersom den inloggade medlemmen SKA ha tillgång till "historia.asp" :(

Suck, jag lär mig aldrig det här...
Tacksam för rättelse i koden nedan

Dessutom vore det ju bra om det finns en "logout"-länk överst på sidan "historia.asp" och den syns inte :r

Sylvia


<%

If Session("login") = "ok" Then%>
<table width="400">
<tr>
<td><b><a href="java script:Logut('admin.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
<td>Inloggad som användare</td>
</tr>
</table>

<%
else
%>
Du är inte inloggad
<%
end if
%>

<%if Session("uid")="" then
response.redirect "ejmedlem.asp"
end if
%>
Medlem sedan jan. 2003247 inlägg
#5

Vart sätts denna Session? Session("uid")

Om den inte sätt någonstans kommer den alltid vara tom och skicka iväg användaren till ejmedlem.

Om du som jag tror ska använda Session("login") (ska vara = "ok" när någon är inloggad) så är det så här det bör vara.

<%

If Session("login") = "ok" Then%>
<table width="400">
<tr>
<td><b><a href="java script:Logut('admin.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
<td>Inloggad som användare</td>
</tr>
</table>

<%
else

response.redirect "ejmedlem.asp"

end if
%>
Medlem sedan feb. 2003107 inlägg
#6

Jag har inte satt någon session, det var något som jag sökte mig till och hittade på forumet bara som jag testade :)

Din variant på kod ger:

om en obehörig går in på sidan redirektas den till "ejmedlem.asp"
MEN om man loggar in och klickar på länken historia.asp
så hittas inte sidan...?

Koden nedan (nytt försök) ger resultatet jag vill ha
att obehörig slussas vidare till "ejmedlem.asp" och behörig stannar kvar med möjlighet att logga ur med länk längst upp på sidan.

<%

If Session("login") = "ok" Then%>
<table width="400">
<tr>
<td><b><a href="java script:Logut('historia.asp?visa=logut')">Logga ut</a></b></td>
</tr>
<tr>
<td>Inloggad som användare</td>
</tr>
</table>

<%
else
%>

<%if Session("uid")="" then
response.redirect "ejmedlem.asp"
end if
%> 

<%
end if
%>

dock så fungerar inte logut-länken som den ska x(
och har ingen aning om varför
längst ner på sidan har jag en aspkodsnutt för logout

<%
If Request.QueryString("visa") = "logut" Then
   Session.Abandon
   Response.Redirect "admin.asp"
End If%>
Medlem sedan jan. 2003247 inlägg
#7

Göra så här att du fäljer detta o testar.

En fil historia.asp

<%

If Request.QueryString("visa") = "logut" Then
   Session.Abandon
   Response.Redirect "utloggad.asp" 'skickar besökaren till utloggad.asp då man klickat på logga ut
End If

If Session("login") = "ok" Then%>
<table width="400">
<tr>
<td><b><a href="historia.asp?visa=logut">Logga ut</a></b></td>
</tr>
<tr>
<td>Inloggad som användare</td>
</tr>
</table>

<%
else

response.redirect "ejmedlem.asp" ' obehörig skickas till ejmedlem.asp

end if
%>
Medlem sedan feb. 2003107 inlägg
#8

Fungerar som min kod dvs att obehörig slussas vidare och medlem ser sidan men kan inte logga ut.

när man trycker på länken logga ut så får man upp "'The page cannot be find" fel 404

att det ska vara så svårt att logga ur korrekt? :(

Medlem sedan feb. 2003107 inlägg
#9

Nu tror jag att det fungerar!
Noterade inte att du lagt dit "utloggad.asp" och skrev in admin.asp och blev skickad till inloggningssidan i stället....
Nu ska jag testköra lite och återkommer

Tack!

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)