webForumDet fria alternativet

Dubbla användare

ASP

9 svar · 320 visningar · startad av WebbisNet

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

I min chatt jag bygger publikt så initierar jag en session med användarnamnet som startar efter att man har fyllt i en textruta. Hur kontrollerar jag om en session som redan finns blir upptagen om nån annan vill logga in med samma namn?

Medlem sedan nov. 20017 144 inlägg
#2

Det beror väl på hur chatten är uppbyggd.
Databas?

Medlem sedan nov. 20017 144 inlägg
#3

Starta inte flera trådar i samma ämne.

Medlem sedan feb. 20032 027 inlägg
#4

Jesper T skrev:

Starta inte flera trådar i samma ämne.

Sorry

chatten är uppbyggd så att datum, tid och meddelande ligger i db och användarnamnet finns i en session.

Hade användarnamnet kunnat ligga i en db hade jag kunnat klara det men då det är en publik chatt så kommer och går alla och mitt webhotell har tagit bort fso så jag kan inte spara användare i textfil heller

Medlem sedan nov. 20017 144 inlägg
#5

Men så länge ett användarnamn ligger i en session så kommer bara en användare(me, I and my self) kunna se användarnamnet.
Det går inte att lägga in allas användarnamn i en session och projicera de för alla.
Då är det en application och inte en session.

Medlem sedan feb. 20032 027 inlägg
#6

Jesper T skrev:

Men så länge ett användarnamn ligger i en session så kommer bara en användare(me, I and my self) kunna se användarnamnet.
Det går inte att lägga in allas användarnamn i en session och projicera de för alla.
Då är det en application och inte en session.

men som jag skrev så har jag ångrat mig och plockat in dem i db istället

Medlem sedan aug. 200426 inlägg
#7

självklart så ska du ha dom i en db istället för en massa onödiga sessions.

Medlem sedan feb. 20032 027 inlägg
#8

dincy skrev:

självklart så ska du ha dom i en db istället för en massa onödiga sessions.

men ingen har svarat på min fråga än

Medlem sedan nov. 20017 144 inlägg
#9

Som princip:

anvnamn=request("användarnamn")
sql="select användarnamn from tabellen where användarnamn='"& anvnamn &"'"
set rs = conn.execute(sql)
    if rs.eof then
        'Sätt in användaren
    else
        'Skicka tillbaka användaren eller lägg till något på användarnamnet.
    end if
set rs = nothing
Medlem sedan feb. 20032 027 inlägg
#10

Jesper T skrev:

Som princip:

anvnamn=request("användarnamn")
sql="select användarnamn from tabellen where användarnamn='"& anvnamn &"'"
set rs = conn.execute(sql)
    if rs.eof then
        'Sätt in användaren
    else
        'Skicka tillbaka användaren eller lägg till något på användarnamnet.
    end if
set rs = nothing

Så här ser min kod ut:

'Sätt variabler
name=request.form("txtUsername")
SID=Session.SessionID 

'Kontrollera om rutan är tom eller inte. Är den tom så skicka tillbaka med meddelande
if request.form("txtUsername")="" then
    response.redirect "default.asp?error=noUsername"
        else
'Annars loopa igenom alla poster för att kolla så inte samma namn förekommer fler gånger        
        Set rs=objConn.Execute("Select * From tblOnline")
        do until rs.eof
    if name = rs("username") then
        response.redirect "default.asp?error=doubleName"
        rs.MoveNext
        Loop
    end if
end if
else
'Finns namn och inga dubletter så skapa ny rad i db        
SET objConn = connect()
	rs = "INSERT INTO tblOnline"
	rs = rs & "(sessionID, username) "
	rs = rs & "VALUES("& SID &",'"& name &"')"
objConn.Execute rs

'Sätt online som True vid Inloggning
objConn.Execute("Update tblOnline SET online = True WHERE sessionID='"& SID &"'")
'Skicka vidare till chatten med inloggningsnamn
response.redirect "default1.asp?name="&name&""

Kollen för att se till att 2 användare med samma namn hindras från att logga in genomförs inte

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)