Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:20 Der er 47 kommentarer og
1 løsning

Online - Offline

Hej.

Jeg vil gerne have lavet sådan at når brugerne logger på bliver den automatisk "Ja" og når de logger af bliver den "Nej" har forsøgt med:

<%
If Request.QueryString("admin") = "tjek" then
navn = trim(replace(Request.Form("brugernavn"), "'", ""))
kode = trim(replace(Request.Form("kode"), "'", ""))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
sql = "SELECT * from admin WHERE brugernavn = '" & navn & "' AND kode = '" & kode & "'"
Set rs = Conn.Execute(sql)
if not rs.eof then

Set gw = Server.CreateObject("ADODB.RecordSet")
MySQL = "Select * From admin WHERE ID = " & rs("ID")
gw.Open MySQL, Conn, 1, 3           
gw.Update
gw("ip") = Request.ServerVariables("REMOTE_ADDR")
gw.Update

Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Session("Online") = "Ja"
Response.Redirect "../Plus/Menu.asp"
else
response.redirect "../Plus/Fejl.asp"
end if
end if
Set conn = Nothing
Set rs = Nothing
%>

-----------------------------------------------------------------

Men forgæves.

Håber der er nogle der kan hjælpe?
Avatar billede busschou Praktikant
03. april 2005 - 09:28 #1
måske du skal sætte en tid på fx ?
Session.Timeout = 30
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:34 #2
Hvad? :S Prøv lige og smid det ind i koden?
Avatar billede busschou Praktikant
03. april 2005 - 09:35 #3
kan ikke umiddelbart se hvorfor den ikke skulle gemme din session...med mindre du måske overskriver eller sletter den i Menu.asp?
Avatar billede busschou Praktikant
03. april 2005 - 09:37 #4
Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Session("Online") = "Ja"
Session.Timeout = 60
Response.Redirect "../Plus/Menu.asp"
------------------------------
Sætter den tid session gælder. Normalt gælder en session vist 20min eller til der lukkes for vinduet.
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:38 #5
Min session gælder til der bliver trykket på "Log ud" :)

Min menu.asp ser således ud:

<!--#include file="beskyt.asp" -->
<!-- #include file = "Online.asp" -->
<!--#include file="Tjek.asp" -->

<head>
<title></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<%
' vi starter med at oprette forbindelse til vores database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
Conn.Open DSN

' og så finder vi dataene, hvor værdien af feltet ID = værdien i vores Session("ID")
SQL = "Select * FROM admin WHERE ID=" & Session("ID")
Set rs = Conn.Execute(SQL)

' nu kan vi så lave vores udtræk
Response.Write "Hej " & Rs("Navn") & "!" & "<br>"

' og for god ordens skyld lukker vi lige for databaseorbindelsen
Conn.Close
Set Conn = Nothing
%>
<hr>

<a href="../Brugersystem/Brugerliste.asp" target="indhold">Brugerliste</a><br>
<a href="../Brugersystem/rediger_profil.asp" target="indhold">Rediger din profil<br></a>
<% if session("status") = "Admin" then response.write " <a href='../Admin/Admin.asp' target='indhold'>Admin</a><br>" end if %>
<a href="../Tagwall/Tagwall.asp" target="indhold">Tagwall</a><br>
<a href="Logud.asp">Log af</a><br><br>


--------------------------------------------------------------------------------

Måske svaret er det?
Avatar billede busschou Praktikant
03. april 2005 - 09:41 #6
virker det slet ikke?
for måske du skal lave ID med småt så..som du definerer det i din session
altså:
SQL = "Select * FROM admin WHERE ID=" & Session("id")
Avatar billede busschou Praktikant
03. april 2005 - 09:42 #7
piller du ved sessions i en af dine include filer?...
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:44 #8
Nej piller ikke ved nogle session´s som betyder noget. Men kan det ikke ske den ikke skriver den fordi jeg ikke angiver hvor den skal skrive "Ja" og "Nej" til?
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:46 #9
I de andre har jeg eks. skrevet:

Session("brugernavn") = rs("brugernavn")

Så siger jeg jo at Brugernavnet skal skrives til tabellen "Brugernavn"
Avatar billede busschou Praktikant
03. april 2005 - 09:47 #10
nå du skriver : Session("Online") = "Ja" ... så inderholder sessionen jo værdien "JA"
Måske er jeg så ikke helt med på problemet
Hvor hiver du værdien ud af Session("online") igen??
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:48 #11
I min profil.asp:

      <td height="21" width="94"><b>Status:</b></td>
      <td height="21" width="446"><%=Server.HtmlEncode(rs("status"))%>
      </td>
    </tr>
    <tr>
      <td height="24" width="94"><b>Online?:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("Online"))%></td>
    </tr>
    <tr>
      <td height="24" width="94"><b>MSN:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("MSN"))%></td>
    </tr>
    </table>

-----------------------------------------------------------------------------
Avatar billede busschou Praktikant
03. april 2005 - 09:49 #12
Session("brugernavn") = rs("brugernavn")
Siger at du i din session opretter et "brugernavn" med værdien som står i rs("brugernavn")
Session("online") = "ja"
Siger tilsvarende at du i din session opretter et "online" felt med værdien "ja"
Så det burde virke fint fint
Avatar billede busschou Praktikant
03. april 2005 - 09:49 #13
width="446"><%=Server.HtmlEncode(Session("Online"))%></td>
Avatar billede busschou Praktikant
03. april 2005 - 09:50 #14
Der er forskel på om du er i din database (rs) eller om du kigger i dine sessions
Avatar billede busschou Praktikant
03. april 2005 - 09:51 #15
Når du hiver ud af din database og gemmer i sessions objektet så er ideen vel at du slipper for at kigge i din database ? ;o)
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:51 #16
Hey fedt nu virker det. Den skriver ja hvis man logger på. Men den skriver ikke nej hvis man er logget af :s
Avatar billede busschou Praktikant
03. april 2005 - 09:52 #17
hvor logger du af?
Du skal jo så inden du logger af sætte
Session("Online") = "nej"
Avatar billede busschou Praktikant
03. april 2005 - 09:53 #18
eller ikke inden..men når du logger af
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 09:56 #19
Jeg logger af sådan:

<%
' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>

Også hvis nu jeg indsætter Session("Online") = "nej" altså:

<%
' slet værdierne i alle sessions
Session.Abandon
Session("Online") = "nej"
' og videresend brugeren
Response.Redirect "Login.asp"
%>

Så funker det nu stadig ikke.
Avatar billede busschou Praktikant
03. april 2005 - 09:56 #20
Hvis det er samme linje kan du jo også gøre følgende:
width="446"><%If Session("Online") = "ja" then response.write "Ja" else response.write "Nej" end if%></td>
Avatar billede busschou Praktikant
03. april 2005 - 09:57 #21
på den måde behøver du ikke sætte sessionen igen når du har abandon dem alle
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:01 #22
Nu skriver den bare "Nej" hele tiden :s
Avatar billede busschou Praktikant
03. april 2005 - 10:01 #23
men er det meningen at man som bruger skal kunne se om man selv er online.?.. eller er det meningen at andre skal kunne se det?
For hvis andre skal kunne se det så ville det nok være en ide at lave et felt i databasen som hed "online" og så bruge det felt frem for sessionen
Avatar billede busschou Praktikant
03. april 2005 - 10:02 #24
hehe det er måske fordi der er forskel på "ja" og "JA" og "Ja" osv ;o)
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:04 #25
Det er så andre kan se det og en selv. Altså alle på sitet skulle kunne se det. Og jeg har et felt i databasen som hedder Online. Har du så nogle gode råd? :)
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:06 #26
Haha det var fordi der var forskel på store og små har jeg lige fundet ud af :)
Avatar billede busschou Praktikant
03. april 2005 - 10:08 #27
Ja så skal du jo ikke rette rs("online") til session("online")
Så skal du jo der hvor du sætter Session("online") = "Ja" lave en databaseforbindelse
som updater brugerens online felt i databasen til "Ja" og tilsvarende når vedkommende logger ud
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:10 #28
Jo men på den anden måde der kan alle på sitet vel også se det? Så kan det vel egentlig på en måde være lige meget?
Avatar billede busschou Praktikant
03. april 2005 - 10:10 #29
altså noget ala
sql = "UPDATE brugere SET online = Ja WHERE ID =" & rs(id)
Avatar billede busschou Praktikant
03. april 2005 - 10:11 #30
kan de det?... det ville jeg ikke tro på den måde men ok
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:15 #31
Nej det kan de sgu ikke det har du ret i. Kan du ikke lige fortælle mig hvordan jeg skal stille det op i Login.asp?

Login.asp:

<html>
<!--#Include file="../Plus/title.asp"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<% if request.querystring("mode") = "fejl" then
response.write "Fejl."
else%>

<!--#Include file="Tjek.asp"-->

<form action="login.asp?admin=tjek" method="post">
<b>

Brugernavn:</b><!--webbot bot="Validation" S-Data-Type="String"
B-Allow-Letters="TRUE" --><input type="text" name="brugernavn" size="9" style="border-width: 1px; border-style: solid; color:#00A84D;">
<b>Kode:</b>
<!--webbot bot="Validation" S-Data-Type="String" B-Allow-Letters="TRUE"
B-Allow-Digits="TRUE" B-Allow-WhiteSpace="TRUE" -->
<input type="password" name="kode" size="10" style="border-width: 1px; border-style: solid; color:#00A84D;">
<input type="submit" value="Log ind!" style="background-color:#EB2D2E; border-color:#000000; border-style:solid; "></form>
<form action="Opret.asp" method="post">
<input type="submit" value="Opret" style="background-color:#EB2D2E; border-color:#000000; border-style:solid; ">


<% end if %>

<b><br>
<%
If Request.QueryString("admin") = "tjek" then
navn = trim(replace(Request.Form("brugernavn"), "'", ""))
kode = trim(replace(Request.Form("kode"), "'", ""))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
sql = "SELECT * from admin WHERE brugernavn = '" & navn & "' AND kode = '" & kode & "'"
Set rs = Conn.Execute(sql)
if not rs.eof then

Set gw = Server.CreateObject("ADODB.RecordSet")
MySQL = "Select * From admin WHERE ID = " & rs("ID")
gw.Open MySQL, Conn, 1, 3           
gw.Update
gw("ip") = Request.ServerVariables("REMOTE_ADDR")
gw.Update

Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Session("Online") = "Ja"
Session.Timeout = 60
Response.Redirect "../Plus/Menu.asp"
else
response.redirect "../Plus/Fejl.asp"
end if
end if
Set conn = Nothing
Set rs = Nothing
%>
</b>


</html>

------------------------------------------------------------------------------------

Så du rigtig sød.
Avatar billede busschou Praktikant
03. april 2005 - 10:16 #32
jeg ville ikke tro at du fra en asp side kan hente og vise alle sessioner for de gemmes jo med et id på ens pc lokalt som refererer til sessionen
Avatar billede busschou Praktikant
03. april 2005 - 10:18 #33
inden
Response.Redirect "../Plus/Menu.asp"
lav
strSQL = "UPDATE admin SET online=Ja WHERE id="&rs("id")
Conn.Execute(strSQL)
----
burde gør det
Avatar billede busschou Praktikant
03. april 2005 - 10:19 #34
men jeg kan ikke helt lure din kode...er alle admins?
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:26 #35
Hmm.. Kan sgu ikke helt få det til at funke :s

Noget af login.asp ser sådan ud:

strSQL = "UPDATE admin SET online=Ja WHERE id="&rs("id")
Conn.Execute(strSQL)
Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Session("Online") = "Ja"
Session.Timeout = 60

også lavede jeg også Profil.asp om:

<td height="24" width="94"><b>Online?:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("Online"))%></td>

Men så får jeg bare en fejl i profil.asp:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'HtmlEncode'

/brugersystem/profil.asp, line 67


Hvilket tyder på den ikke skriver til Databasen om man er online eller ej? :s
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:26 #36
Haha Nej er de ikke det er bare tabellen der hedder Admin.
Avatar billede busschou Praktikant
03. april 2005 - 10:29 #37
betyder at den ikke kan lave det dersen htmlencode...men hvis du ved at der kun kan stå "Ja" eller "Nej" ... så kan du vel fjerne den Server.HtmlEncode?
Avatar billede busschou Praktikant
03. april 2005 - 10:30 #38
Men jeg tror måske du skal bytte om på det
Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Session("Online") = "Ja"
Session.Timeout = 60
strSQL = "UPDATE admin SET online=Ja WHERE id="&rs("id")
Conn.Execute(strSQL)
-----------------
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:30 #39
Jamen den skal jo bare vise indholdet i den tabel? Det fatter jeg bare ikke hvorfor den ikke gør :s Det kan vel kun være fordi den ikke skriver ordentligt til databasen i Login.asp?
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 10:33 #40
Virker stadig ikke :s
Avatar billede busschou Praktikant
03. april 2005 - 10:35 #41
hvis den ikke skriver ordentlig til databasen så ville den give dig en fejl...det gør den ikke...
Den fortæller dig at typerne ikke stemmer overens
Så prøv at fjerne Server.HtmlEncode og nøjes med
<td height="24" width="94"><b>Online?:</b></td><td height="24" width="446"><%=rs("Online")%></td>
Avatar billede busschou Praktikant
03. april 2005 - 10:44 #42
kender i øvrigt ikke til denne metode:
--------------------
Set gw = Server.CreateObject("ADODB.RecordSet")
MySQL = "Select * From admin WHERE ID = " & rs("ID")
gw.Open MySQL, Conn, 1, 3         
gw.Update
gw("ip") = Request.ServerVariables("REMOTE_ADDR")
gw.Update
--------------------
men måske det er muligt du ligesågodt kan lave det i den:
--------------------
Set gw = Server.CreateObject("ADODB.RecordSet")
MySQL = "Select * From admin WHERE ID = " & rs("ID")
gw.Open MySQL, Conn, 1, 3         
gw.Update
gw("ip") = Request.ServerVariables("REMOTE_ADDR")
gw.Update
gw("online") = "Ja"
gw.Update
Avatar billede busschou Praktikant
03. april 2005 - 10:54 #43
snupper lige en pause herfra.. men håber du kan bruge noget af det jeg har skrevet til noget :o)
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 11:00 #44
Det virker fint nok. Men den skriver ikke nej når man logger af.
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 11:01 #45
Nå. Øv. Men fint du skal have dine point.
Avatar billede busschou Praktikant
03. april 2005 - 11:05 #46
Det er nok fordi du jo også skal opdatere databasen når der logges ud
<%
' slet værdierne i alle sessions
Session.Abandon
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
strSQL = "UPDATE admin SET online=Nej WHERE id="&session("id")
Conn.Execute(strSQL)
' og videresend brugeren
Response.Redirect "Login.asp"
%>
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 17:58 #47
Så får jeg denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/Plus/Logud.asp, line 7
Avatar billede busschou Praktikant
03. april 2005 - 20:09 #48
undskyld det sene svar ... får du stadig fejl?
Ellers prøv med:
strSQL = "UPDATE admin SET online='Nej' WHERE id="&session("id")
response.write strSQL
Conn.Execute(strSQL)
----
Så kan vi lige lure sql´en hvis det er
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