Avatar billede iceb1977 Nybegynder
27. maj 2002 - 22:16 Der er 13 kommentarer og
1 løsning

Hvis Cookies er der så redirect og ellers læs siden??????


hvordan kan jeg redirecte fra min hovedside til

medlemsside HVIS der findes en medlems cookie på

brugerens pc og ellers læse siden videre ?

Her er koden til hovedsiden... altså den der

skal redirecte....

Denne kode skal helst kunne indsættes på alle

mine medlems sider og dermed sikre at man SKAL

være logget ind for at komme ind på dem ok ?

Det vil sige at på de andre medlemssider skal

siderne læses videre hvis cookien er der og

hvis ikke redirecte så det det modsatte ok ?

predokument.asp

<%
' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")

if Session("loginOK") = "natulivis" then
else
  if request.cookies("forumData") <> "" then
    session("loginMemberID") = request.cookies("forumData")("brugerID")
    strSQL = "SELECT * FROM medlemmer WHERE ID = " & session("loginMemberID")
    set rs = Conn.Execute(strSQL)
response.write rs("ID")     
if NOT rs.EOF then
      session("loginOK") = "naturligvis"
    else
      session("loginMemberID") = ""
    end if
  else
    response.redirect("formular.asp")
  end if
end if

response.write request.cookies("forumData")("brugerID")



Conn.Close
%>


<html>
<title>login</title>
<head>
</head>

<body bgcolor="#999966" text="#000000" link="#000000" vlink="#000000" alink="#FFFFFF">

Her kommer login koden med login formular.....


<h1>Dette er forsiden</h1><br><br>

<%

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")
  username = replace(Request.Form("username"),"'","")
  password = replace(Request.Form("password"),"'","")
  strSQL= "SELECT * FROM medlemmer WHERE (brugernavn= '" & username & "' AND kode='" & password & "');"
  Set rs = Conn.Execute (strSQL)

if not rs.EOF then
    session("loginOK") = "naturligvis"
    session("loginMemberID") = rs("ID")
    response.cookies("forumData")("brugerID") = Session("loginMemberID")
    response.cookies("forumData").Expires = now + 365
    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("dokument.asp")
  else
    session("loginOK") = ""
    session("loginMemberID") = ""

    Conn.Close
    'Den side man skal til når man er logget ind
    Response.Redirect("til.asp")

end if

 
else
    session("loginOK") = ""
    session("loginMemberID") = ""
    response.cookies("forumData")("brugerID") = ""
  end if
%>
<html>
<head></head>
<body>
<p>Velkommen til denne site login her:</p>
<table border="1">
<form method="post" action="formular.asp">
  <tr><td>Brugernavn:</td><td><input name="username"></td></tr>
  <tr><td>Password:</td><td><input type="password" name="password"></td></tr>
  <tr><td colspan="2" align="center"><input type="submit" value="Login" name="Action">
<input type=hidden name=huskmig value=ja>
</td></tr>
</form></table><br><br><br><br>

<a href="http://www.iceb.ljnet.dk/flash/mail.html" target="_blank">Anbefel Heilpraktikken</a><br><br>

<a href="http://www.iceb.ljnet.dk/flash/kont.html" target="_blank">Kontakt</a><br>



</body>
</html>
Avatar billede jeg_var_gangsta Nybegynder
27. maj 2002 - 22:21 #1
<%
if request.cookies("cookienavn") = "en_specificeret_værdi" then
  response.redirect "medlemssiden.asp"
else
  response.write "du er ikke medlem! SKARNSUNGE!"
end if
%>
Avatar billede iceb1977 Nybegynder
27. maj 2002 - 22:31 #2
altså det er meningen at når man logger ind så laver man

en cookie ....

I cookien er der så gemt et id som er det man identificerer

brugeren med ok ?

<%
if request.cookies("cookienavn") <> "" then
  response.redirect "premedlemssiden.asp"
else
  response.redirect "medlemssiden.asp"
end if
%>

Hm kan jeg gøre sådan eller ?
Avatar billede iceb1977 Nybegynder
27. maj 2002 - 22:47 #3
Her er medlemssiden som gerne skulle tjekke om

der er cookie og hvis der er læse siden videre

og hvis der ikke er redirecte til premedlemssiden

<%
' Databaseforbindelse - husk at angive sti til din database
  Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")

if Session("loginOK") = "natulivis" then
else
if request.cookies("forumData")="" then
response.redirect "predokument.asp"
end if
  if request.cookies("forumData") <> "" then
    session("loginMemberID") = request.cookies("forumData")("brugerID")
    strSQL = "SELECT * FROM medlemmer WHERE ID = " & session("loginMemberID")
set rs = Conn.Execute(strSQL)

   
if NOT rs.EOF then
      session("loginOK") = "naturligvis"
    else
      session("loginMemberID") = ""
    end if
  else
    response.redirect("formular.asp")
  end if
end if


%>


<html>
<title>tid og dato</title>
<head>
</head>

<body bgcolor="#999966" text="#000000" link="#000000" vlink="#000000" alink="#FFFFFF">


<h1>Dette er medlemssektionen</h1>
<br>Velkommen <% response.write rs("brugernavn")%><br>


<br><b>Brugerfunktioner</b><br><br>
<a href="http://www.iceb.ljnet.dk/flash/db.asp" target="_blank">E-handel</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/se.asp" target="_blank">Forum</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/ustat.asp" target="_blank">Min side</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/photo_click.html" target="_blank">Gratis sektion</a><br><br>
<b>Generelle funktioener</b><br><br>
<a href="http://www.iceb.ljnet.dk/flash/mail.html" target="_blank">Anbefal Heilpraktikken</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/til.asp" target="_blank">Registrer ny bruger</a><br><br>
<a href="http://www.iceb.ljnet.dk/flash/kont.html" target="_blank">Kontakt</a><br><br><br><br>

<a href="http://www.iceb.ljnet.dk/flash/logud.asp">Log ud</a><br>


</body>
</html>

<% response.write request.cookies("forumData")("brugerID")
Conn.Close
%>
Avatar billede tmceu Praktikant
27. maj 2002 - 22:58 #4
Hvad er vigtigst, om de er logget ind eller om der er cookie ?

Du skriver <snip>tjekke om der er cookie og hvis der er læse siden videre og hvis der ikke er redirecte til premedlemssiden</snip>

Men der bliver slet ikke kontrolleret for cookies, hvis de er logget ind (via sessions variablen). Er dette bevidst ?
Avatar billede iceb1977 Nybegynder
27. maj 2002 - 23:30 #5
hm altså jeg kender mest til cookies så kunne man sige at

1.en bruger logger ind

2.opretter dermed en cookie

3.bliver redirectet til medlemssiden

4.på medlemssiden tjekkes der efter cookies

5.hvis der er cookie så læses siden videre og hvis ikke

6.redirectes til premedlemssiden igen

7.de andre medlemssider fungerer også med redirection HVIS der ikke

er cookies til premedlemsiden også og hvis der er cookies så læs

siden videre....

8. desuden har jeg lavet en log out der sættes expire now-1 så

cookien udløber.....

kan jeg lave det sådan og hvordan gør jeg ?
Avatar billede tmceu Praktikant
27. maj 2002 - 23:44 #6
Som jeg skrev til dig i går, i det næsten identiske spørgsmål, går det galt mellem step 2 og 3. Du bør IKKE sætte en cookie og lave redirect på samme side. Der er ingen garanti for at det går godt (læs: det virker ikke).

Hvis du sætte .expires = dateadd("h", -1, now()) eller andre negative værdier, vil du jo aldrig have en cookie at kontrollere op imod.

Hvorfor vil du iøvrigt bruge både cookie og sessions variabler til at styre din login ? Jeg er med på, at en cookie kan bruges til auto-logon, men det virker som om du "over styrer" din login.

Som jeg forstår dit spørgsmål, er den rigtige måde for dig:

1. En bruger besøger din side og du kontrollerer (via en include fil) om vedkommende er logget ind.

Hvis ja, ingen problemer kør siden.
Hvis nej, kontroller om der findes en auto-logon cookie og kontroller om evt. brugernavn/password er korrekt. Hvis ja, kør siden, hvis nej, redirect til login siden.

Hvis nej (der findes ingen cookie), redirect til login siden.

På login siden, sætter du din sessions variabel når brugeren er logget ind. Vælges der auto-logon, skriver du cookien, men laver ikke en response.redirect. Bruge i stedet en client-side redirect i HEAD sektionen.
Avatar billede iceb1977 Nybegynder
28. maj 2002 - 00:18 #7
1. En bruger besøger din side og du kontrollerer (via en include fil) om vedkommende er logget ind.

hvad mener du med det ?

Jeg har aldrig brugt include filer.....

man skal ikke kunne vælge om man vil have autologin eller ej.....

MEN og dog skal man selv vælge om man trykker på log ud og

dermed lukker alle sessions og så sletter man også cookien....

Kan man ikke bruge now-1 med cookie ? Hvis ikke hvordan skal

jeg så slette en cookie expire=now ? eller ?

Giv mig lige nogle kode eksempler ok ?
Avatar billede tmceu Praktikant
28. maj 2002 - 00:50 #8
En fil inkluderes eks. sådan:

<%@ Language=VBScript %>
<!-- #Include file="../Includes/StandardHeader.asp" -->
<%

response.write "Min side"

%>

Hvis filen eks. indeholdt

<%
response.write "Velkommen til "
%>

Ville der blive udskrevet "Velkommen til Min side". Dvs. at der, der ligger i include filen, bliver flettet ind i hoved filen. Du kan også ligge funktioner og andet script i include filer, eks. dit login check.

Medlem.asp:

<%@ Language=VBScript %>
<% response.buffer = true %>
<!-- #Include file="LoginCheck.asp" -->
<%

' indholdet på din side

%>

LoginCheck.asp:

<%

If Not LCase(Session("Login")) = "true" And request.cookies("forumData")=""
  ' Ikke logget ind og ingen cookie
  response.redirect("login.asp")
End If

%>

Mht. expires på cookies, skal den vel sættes frem i tiden, eks. 1 time med:

.expires = dateadd("h", 1, now())

Hvis du sætter den bagud i tiden, udløber den straks og dermed har du ingen cookie.

Sessions lukkes med session.abandon og dermed dør alle sessions variabler.
Avatar billede iceb1977 Nybegynder
28. maj 2002 - 01:15 #9
ok kan jeg sætte den bare til expires= now()
Avatar billede iceb1977 Nybegynder
28. maj 2002 - 01:22 #10
jeg har arbejdet på noget nu ....

dette skal sidde på medlemssiden....

der tjekkes her efter cookie og hvis der er cookie så lukkes

brugeren ind og hvis ikke smider brugeren tilbage på premedlemssiden

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & Server.MapPath("/db/hp.mdb")
  Conn.Open DSN
  Set rs = Server.CreateObject("ADODB.RecordSet")

if request.cookies("forumData")("brugerID")="" then
response.redirect "formular.asp"
else


response.write request.cookies("forumData")("brugerID")

strSQL="SELECT * FROM medlemmer WHERE id=" & request.cookies("forumData")("brugerID")

Set rs = Conn.Execute(strSQL)


Do

  ' Udskriv værdien af kolonnen Fornavn
response.write rs("brugernavn")
  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF
Conn.Close
end if
%>

Kan jeg bruge dette ?
Avatar billede tmceu Praktikant
28. maj 2002 - 11:01 #11
Hvis du sætter den til now(), har du samme problem. Du vil ikke have nogen cookie, da den udløber i samme sekund du sætter den = now(). Du skal sætte dem frem i tiden, hvis du vil kunne bruge den senere.

Hvis du eks. siger at en cookie gælder én time fra logon, sætter du den til dateadd("h", 1, now()).

Ellers ser det ok ud nu.
Avatar billede iceb1977 Nybegynder
28. maj 2002 - 12:30 #12
nej du misforstår jeg skal bruge det med now til min log ud funk

og det virker med - ... osv som jeg skrev før....

Kan jeg bruge den kode ?

Og hvordan vil en kode se ud der tjekker om id*et i cookien

også eksisterer i db*en ?
Avatar billede tmceu Praktikant
28. maj 2002 - 13:22 #13
Hvis du bare vil vide om den findes, kan du nøjes med dette:

strSQL="SELECT COUNT(*) FROM medlemmer WHERE id=" & request.cookies("forumData")("brugerID")

Set rs = Conn.Execute(strSQL)
If rs.EOF Then ' bruger findes ikke
response.redirect("fejl.asp")
End If

Hvis du vil have felter med tilbage, kan du gøre som du allerede har gjort:

strSQL="SELECT * FROM medlemmer WHERE id=" & request.cookies("forumData")("brugerID")

Set rs = Conn.Execute(strSQL)

If RS.EOF Then ' bruger findes ikke
[kode når brugeren ikke findes]
Else
' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Do Until RS.EOF
  ' Udskriv værdien af kolonnen Fornavn
  response.write rs("brugernavn")
  ' Gå til næste Record i rs
  rs.MoveNext

Loop
End If

Der er dog et par obs'er:

Afhængig af hvilken database du bruger og om BrugerID er nummerisk el tekst, kan det være nødvendigt med en eller flere af disse:

ID er reserveret ord i nogle databaser og skal derfor ofte angives som [ID]
Hvis ID er nummerisk, skal man i nogle tilfælde konvertere den eksplicit til nummerisk, eks med CInt(request.cookies("forumData")("brugerID")
)

Hvis ID er tekst, skal du huske ' (pinger) omkring, altså:

strSQL="SELECT * FROM medlemmer WHERE id='" & request.cookies("forumData")("brugerID") & "'"
Avatar billede iceb1977 Nybegynder
29. maj 2002 - 12:35 #14
nå kan jeg request en include fil eller hvordan ?

jeg har jo en hel del kode der tjekker om man er logged on osv ?
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