Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ta bort ur databas när session dör

Postades av 2002-10-29 08:42:41 - Jimmy Nilsson, i forum asp - allmänt, Tråden har 24 Kommentarer och lästs av 485 personer

Jag vill köra följande SQL kod när man loggar ut från mina sidor, det blir väl när man stänger sessionen och även om man stänger browserfönstret men då dör väl sessionen automatiskt?

DELETE * FROM TEMPTAB WHERE KUNDNR = '" & Session("user") "'

Hur kan jag smidigast lösa det. Är tacksam för exempel.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 08:52:09 - Jonas Bergfors

Hej
Du kan använda session_en_end i global asa som trigas när en session dör. Den är dock inte hundragunnar så den kombinerad med att du sparar i en databs när dom enast lada om en sida och sin vid typ en inlogning eller likande så kollar du i databsen efter gamla som inte finns mer och tar bort dom där.

Det med att stänga fönstret så kan du använda BODY ONUNLOAD och kalla på en sida som kör din fråga.

/jonber


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 08:53:16 - Ola Lindfeldt


använd "Sub Session_OnEnd"

kolla här:
http://mike.elit.net/Braindump/asp/whoson.asp


.Ola


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 09:23:51 - Jimmy Nilsson

har nu skrivit så här men det fungerar inte särskilt bra, körs global.asa innan allt annat eller efter?

<code>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

SQL = "DELETE FROM TEMPTAB WHERE KUNDNR = '" & Session("user") & "'"
Set RS = Conn.Execute(SQL)

End Sub

</SCRIPT>
</code>


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 12:42:52 - Jimmy Nilsson

Några förslag på vad jag kan göra för fel?


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 12:46:56 - Jesper Thörn

Är kundnr av typen tal så borde det se ut så här:
<code>SQL = "DELETE FROM TEMPTAB WHERE KUNDNR = " & Session("user") </code>

Lägg även till detta:

Set RS = Conn.Execute(SQL),,128

Och sedan så har du väl även med connectionsträngen?!


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 12:51:39 - Jimmy Nilsson

vad har ,,128 för funktion


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 13:35:47 - Jesper Thörn

Det betyder att du inte skapar något recordset vilket man inte gör när man updatar eller deletar.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 13:39:12 - Andreas Hillqvist

Du kan inte använda Sessions variabler. Eftersom dessa är frigjorda i Sesson_OnEnd(). Använd istället: Session.SessionId för att identifiera en sesion med post i databasen.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 14:14:02 - Jimmy Nilsson

Nu är det så att jag använder Session("user") på hela webbplatsen, något sätt måste ju finnas att ta bort allt från databasen med ett visst nummer


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 14:30:36 - Andreas Hillqvist

Lägg till ett fält i tabellen som du lagrar SessionId när du skapar posten. Sedan tar du bort den med:

"DELETE FROM TEMPTAB WHERE SessionId = " & Session.SessionId


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-29 14:32:27 - Jimmy Nilsson

hmm, tål att tänkas på får nog luska lite på det, återkommer om jag får fler problem tackar för hjälpen så länge


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 08:39:03 - Jimmy Nilsson

Min global.asa ser nu ut så här och jag kör Session.Abandon men det händer ingenting

<code>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

SQL = "DELETE FROM TEMPTAB WHERE SESSION = '" & Session.SessionID & "'"
Set RS = Conn.Execute(SQL)

End Sub

</SCRIPT>
</code>


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 09:25:48 - Andreas Hillqvist

Testa att skriva Session.SessionID till fil vid start och stop. Kontrollera att det är identiska.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 09:29:46 - Jimmy Nilsson

Ja de är identiska, skriver jag rätt i global.asa man behöver inte ha Dim och en massa connectionstrings och sånt? Det har jag på de andra sidorna


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 11:47:04 - Daniel Norberg

Du måste ha connectionstrings och sånt i global.asa också.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 12:24:48 - Jimmy Nilsson

Har nu gjort så här men det går inte heller

connect.asp ser ut så här

<code>
<!--include virtual="adovbs.inc"-->
<%
'Ansluter och kollar om användaren finns i databasen och att user och pass är rätt annars skickas till swe_fellogin.asp

Dim Conn, user, pass

On Error Resume Next

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=testdatabas", Session("user"), Session("pass")

If Err.Number <> 0 then
Response.Write "Du är utloggad"
Else

End If
%>
</code>

global.asa
<code>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

<%
Session("user")
Session("pass")
%>
<!--#include file="connect.asp"-->

Sub Session_OnEnd

Dim SQL, RS

SQL = "DELETE FROM TEMPTAB WHERE SESSION = '" & Session.SessionID & "'"
Set RS = Conn.Execute(SQL)

End Sub

</SCRIPT>
</code>

Måste man ha include adovbs.inc i global.asa också och option explicit?


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-30 14:33:44 - Andreas Hillqvist

Du är helt ute och cycklar.
* Hur ska man kunna logga in på anslutningen om Sessionsvariablerna är tomma?
Ur prestanda synpunkt är dett snabbare att använda ett konto för alla användare.
Alternativt ett kont för vilket rättighetsnivå du har.

* Du har inkluderat ditt skript utanför subrutinen Session_OnEnd
Du har därför inte tillgång eller instansierat ditt connection objekt.





Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 08:39:23 - Jimmy Nilsson

Det är inte jag som bestämt att det ska vara olika användare, vad menar du med att sessionsobjektet är tomt, var då?

global.asa ser nu ut så här

<code>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

<%
Session("user")
Session("pass")
%>
<!--#include file="connect.asp"-->

Dim SQL, RS

SQL = "DELETE FROM TEMPTAB WHERE SESSION = '" & Session.SessionID & "'"
Set RS = Conn.Execute(SQL)

End Sub

</SCRIPT>
</code>


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 08:51:28 - Andreas Hillqvist

Session's variablerna frigörs. Så eventuella värden i dem finns inte längre kvar. Eftersom den inte rapportera fel är det svårt att se vad som blir fel.

Använd istället ett hårdkodat konto i Global.asa. Men tänk då på att lägga in en If sats vid inloggning. Så att inte användare kan logga in med systemkontot.

<code>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd
Dim SQL
Dim Conn

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=testdatabas", "sysuser", "grodlår"

Conn.Execute "DELETE FROM TEMPTAB WHERE SESSION = " & Session.SessionID

Conn.Close
Set Conn = Nothing
End Sub
</SCRIPT>
</code>

Session.SessionID är ett tal. Så du bär använda tal som fälttyp och skippa enkel fnuttarna.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 08:55:20 - Jimmy Nilsson

Eftersom jag använder Borland Interbase som databas så har jag lagt upp olika användare på databasen och det har jag inte så mycket att säga till om, inte jag som bestämt det, sessionkolumnen i databasen har jag gjort till Char(40) så därför använder jag enkelfnuttar och det ska väl gå bra


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 10:33:24 - Andreas Hillqvist

Ändra dtatypen till Integer. Sparar du plats 40byte vs 4byte.

Du måste ha ett konto för att skapa en anslutning mot databasen. Om du inte längre har kvar användarens konto uppgifter för sessionen. Eftersom dessa är frigjorda. Kommer du att behöva ett system konto utöver det vanliga användar kontona.

För övrigt tycker jag du ska ifrågasätt valet av separata konton. Eftersom det då inte finns möjlighet till connection pooling.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 10:35:28 - Jimmy Nilsson

vad är connection pooling? det är max 5-10 st som kommer vara inloggade samtidigt.

Jag har ändrat till Integer men det hjälpte inte


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 10:50:49 - Andreas Hillqvist

Connection Pooling innebär att anslutningen inte dör när du stänger den utan den blir tillgänglig i Connection Pool'en. När du öppnar ett recordset så kollar den om det finns en likadan connection i connection pool'en. Om det inte finns skapas en.

Det är därför det tar längre tid att öppna din anslutning första gången. Medans det ibland går blixtsnabbt att öppna en tidigare anslutning.

Det är därför det är viktigt att så snabbt som möjligt använda close metoden på ditt connection objekt. Eftersom det gör den tillgänglig i connection pool'en. Vilket minimera antalet samtidiga anslutningar på en ASP server.

Du kommer fortfarande ha användning av det för varje enskilld användare. Dess anslutning lever ju kvar mellan sidorna. Men om alla användar skulle ha samma connection sträng. Så slipper det att ha en enskild anslutning. Utan kan använda befintliga.

Allt detta sker internt i ADO.


Svara

Sv: Ta bort ur databas när session dör

Postades av 2002-10-31 10:55:57 - Jimmy Nilsson

ok, tror ändå inte det kommer bli ett problem med kapaciteten i och med att vi är så få. Anledningen till att vi har användare är att en vanlig anställd ska kunna lägga till en användare enkelt med hjälp av ett delphiprogram en programmerare här har gjort.

Det måste väl finnas en lösning på mitt problem även med denna konfiguration?

Tack för att du atr dig tid!

/Jimmy


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 812
27 960
271 761
513
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies