Avatar billede casperlundhansen Nybegynder
14. februar 2004 - 23:29 Der er 20 kommentarer

Request i login

Hejsa, jeg har en fejl i mit chat login, dog kun når chat session kører, altså det første script som i ser her er fra chatlogin.asp som tjekker om en session kører, hvis dette er tilfældet foretaget en response.redirect til chat.asp det lader også til at virker...

' Vis ikke loginsreen hvis session exsist
If (chatID <> "") Then
Response.Redirect "chat.asp?chatID=" & chatID
Response.End
End If

Scriptet redirecter til chat.asp som tjekker flg:

Dim chatID
chatID = Request("chatID")
If (chatID = "") Then
Response.Redirect "expired.asp"
Response.End
End If

Der redirectet altid til expired.asp hvorfor??
Avatar billede htm Nybegynder
14. februar 2004 - 23:33 #1
Prøv:
chatID = Request.Querystring("chatID")
Avatar billede eagleeye Praktikant
14. februar 2004 - 23:37 #2
Det tyder så på den ikke får et chatID med over.

Du skriver session køre?? skal det være:??
If (Session("chatID") <> "") Then

Er der en måde at komme til expired.asp fra den side som redirecter til chat.asp?
Avatar billede casperlundhansen Nybegynder
14. februar 2004 - 23:43 #3
Ja, chatten kører fin, men går man fra den, kan man ikke komme ind igen, da login.asp åbenbart registrere en session og sender en videre til chat.asp og her går det åbenbart galt

Der er umidlbart ikke nogen måde at komme direkte fra login.asp til expired.asp
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 00:33 #4
htm >> det hjalp ikke noget

eagleeye >> ved ikke om det kan laves på en bedre måde?
Avatar billede eagleeye Praktikant
15. februar 2004 - 00:37 #5
Er du skikker på der sker det som du forvendter for ID kan jo ikke bare forsvinde, hvis du i stedet for redirect skriver en teskt ud som test:

If (chatID <> "") Then
'Response.Redirect "chat.asp?chatID=" & chatID
Response.Write "Redirect til chart med chartID = " & chartID
Response.End
End If
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 00:53 #6
ok, du har ret i at det ikke sker det jeg forventer, fordi når jeg sætter den response.write ind sker der intet absolut intet :-(

Vil du se hele login.asp ?
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 01:22 #7
okay, jeg har ændret lidt på system, vil hellere have at brugeren blivet logget af, når en anden side hentes, så er problemet med login i hvert fald løst.

Men nu opstår der et nyt problem, jeg får fejlmeddelse "chatID er ikke difineret ?? når jeg kører dette script

<%    Option Explicit %>
<!-- #include file="chat/constants.inc" -->
<%

   
        Dim chatName
    If (Application.StaticObjects.Item("conquerChat").Exists(CStr(chatID))) Then
        chatName = Application.StaticObjects.Item("conquerChat").Item(CStr(chatID))
    Else
        chatName = "gæst"
    End If
   
   
        Dim x
       
        Application.Lock
       
        ' add a leaving message to chatroom
        For x = MESSAGES To 2 Step - 1
            Application("chatline_" & x) = Application("chatline_" & x-1)
        Next
        Application("chatline_1") = "<span class='LoggedOut'>" & chatName & " forlader chatten " & time() & "</span><br>"
       
        ' remove user
        Application.StaticObjects.Item("conquerChat").Remove(CStr(chatID))
        Application.StaticObjects.Item("conquerChatTime").Remove(CStr(chatID))

        Application.UnLock
       
    %>
Avatar billede eagleeye Praktikant
15. februar 2004 - 12:27 #8
Ja du har  Option Explicit i toppen og der er ikke noget sted chatID bliver Dim'et
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 13:16 #9
Hvordan løser jeg det?
Avatar billede eagleeye Praktikant
15. februar 2004 - 13:24 #10
I det kode du har vist bruger du variablen chatID men den er ikke defineret noget sted eller sat til en værdi.

Du definere den som med chatName

Dim chatID
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 13:34 #11
ok, tjek lige det her.. nu finder den ikke objektet i linie 24 ??

<%    Option Explicit %>
<!-- #include file="constants.inc" -->
<%

    Dim chatID
    chatID = Request("chatID")
   
        Dim chatName
    If (Application.StaticObjects.Item("conquerChat").Exists(CStr(chatID))) Then
        chatName = Application.StaticObjects.Item("conquerChat").Item(CStr(chatID))
    End If

Dim x
       
        Application.Lock
       
        ' add a leaving message to chatroom
        For x = MESSAGES To 2 Step - 1
            Application("chatline_" & x) = Application("chatline_" & x-1)
        Next
        Application("chatline_1") = "<span class='LoggedOut'><" & chatName & " logger af " & Now() & "</span><br>"
       
        ' remove user
        Application.StaticObjects.Item("conquerChat").Remove(CStr(chatID))
        Application.StaticObjects.Item("conquerChatTime").Remove(CStr(chatID))

        Application.UnLock
       
        %>
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 14:02 #12
eagleeye >> har du ikke et bud på hvordan jeg kan afslutte et chatID, så et nyt login er muligt?
Avatar billede eagleeye Praktikant
15. februar 2004 - 14:08 #13
Hvis du sætter chatID = "" så har chatID ikke en værdi og du kan få den til at redirecte til login siden igen så.
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 14:21 #14
Nu køres

<%
Dim chatID
chatID = ("")
%>

når en anden side hentes, virker bare ikke :-(
logger ikke chat session af
Avatar billede eagleeye Praktikant
15. februar 2004 - 14:27 #15
nek det en lokal variable som bare hedder chatID.
Hvor gemmer du en bruger chatID ??
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 14:37 #16
Nu har jeg ikke selv konstrueret chatten, så jeg har ikke selv let ved at gennemskue den, men chatten kører via en global.asa og gemmer vel også chatID her?

<OBJECT    RUNAT=Server
    SCOPE=Application
    ID=conquerChat
    PROGID="Scripting.Dictionary">
</OBJECT>

<OBJECT    RUNAT=Server
    SCOPE=Application
    ID=conquerChatTime
    PROGID="Scripting.Dictionary">
</OBJECT>
Avatar billede eagleeye Praktikant
15. februar 2004 - 14:39 #17
Et eller andet sted må der gemmes nået i session eller en cookie sådan man ved hvilken chatID en bruger har:

Session("chatID") = xxx
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 14:53 #18
ok, jeg er lidt forvirret, men du kan se scriptet her, håber du kan se noget ud af det:

<%    Option Explicit %>
<!-- #include file="constants.inc" -->
<%

    Dim chatID
    chatID = Request("chatID")
    If ( (chatID = "chatID") OR (NOT Application.StaticObjects.Item("conquerChat").Exists(chatID)) ) Then
        Response.Redirect "expired.asp"
        Response.End
    End If
   
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>

    <title></title>
    <link rel="stylesheet" type="text/css" href="chat.css">
</head>

<body bgcolor="#FFFAEA" leftmargin="0" topmargin="0">
<!-- bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#FF0000" alink="#FF0000" -->
<%
   
    Dim chatName
    If (Application.StaticObjects.Item("conquerChat").Exists(CStr(chatID))) Then
        chatName = Application.StaticObjects.Item("conquerChat").Item(CStr(chatID))
    Else
        chatName = "Guest"
    End If
   
    ' user wants to logoff, so we will have to notify all other users
    ' about this by printing some kind of 'user X is now logging off'
    ' message.
    If ( Len(Request("logoff.x")) > 0) Then
       
        Dim x
       
        Application.Lock
       
        ' add a leaving message to chatroom
        For x = MESSAGES To 2 Step - 1
            Application("chatline_" & x) = Application("chatline_" & x-1)
        Next
        Application("chatline_1") = "<span class='LoggedOut'><" & chatName & " logger af " & Now() & "</span><br>"
       
        ' remove user
        Application.StaticObjects.Item("conquerChat").Remove(CStr(chatID))
        Application.StaticObjects.Item("conquerChatTime").Remove(CStr(chatID))

        Application.UnLock
       
    %>
       
      <script language="javascript">
          top.location.href = "default.asp";
    </script>           
       
    <% Else
       
        ' a new message has been send to chat. we want this message to
        ' be added our list of message, indicating which user send it.
        If ( Request("mode") = "message" ) Then
           
            Dim textMessage
            textMessage = Request("message")
           
            ' do not add message, if it is empty
            If (Len(textMessage) > 0) Then
           
                ' we do not support most tags, however <b>, <i> ARE supported, thus we have
                ' to make check for these and replace with actual tags
                textMessage = Server.HTMLEncode(textMessage)
                textMessage = Replace(textMessage, "&lt;b&gt;", "<b>", 1, -1, 1)
                textMessage = Replace(textMessage, "&lt;/b&gt;", "</b>", 1, -1, 1)
                textMessage = Replace(textMessage, "&lt;i&gt;", "<i>", 1, -1, 1)
                textMessage = Replace(textMessage, "&lt;/i&gt;", "</i>", 1, -1, 1)
                textMessage = Replace(textMessage, "&lt;u&gt;", "<u>", 1, -1, 1)
                textMessage = Replace(textMessage, "&lt;/u&gt;", "</u>", 1, -1, 1)
               
                Dim i, text
               
                Application.Lock
               
                ' move all messages one item down in queue
                For i = MESSAGES To 2 Step -1
                    Application("chatline_" & i) = Application("chatline_" & i-1)
                Next
               
                ' build new message
                text = "<table border='0' cellpadding='2' cellspacing='1' width='100%'>" & _
                        "<tr>" & _
                        " <td nowrap valign='top' class='MessageName'><span class='Name'>" & chatName & "</span></td>" & _
                        " <td align='justify' width='100%'><div class='Message' align='justify'>" & textMessage & "</span></td>" & _
                        "</tr>" & _
                        "</table>" & vbCrLf
               
                ' add message as first message in queue
                Application("chatLine_1") = text
               
                ' update users timestamp
                Application.StaticObjects.Item("conquerChatTime").Item(chatID) = CStr(Now())
               
                Application.UnLock
               
            End If
           
        End If
       
    End If ' >> Else .. If ( Len(Request("logoff.x")) > 0) Then
   
    ' do we have to drop some users?
    Dim arUserTimes, timeIdx, curTimestamp
    arUserTimes = Application.StaticObjects.Item("conquerChatTime").Keys
    curTimestamp = Now()
    For timeIdx = 0 To Application.StaticObjects.Item("conquerChatTime").Count-1
        If (DateDiff("s", CDate(Application.StaticObjects.Item("conquerChatTime").Item(arUserTimes(timeIdx))), curTimestamp) > TIMEOUT) Then
            ' this user needs to be locked out - he fell asleep in class..hmm
            Application.Lock
            ' tell other users about this lazy chatter ;o)
            For x = MESSAGES To 2 Step - 1
                Application("chatline_" & x) = Application("chatline_" & x-1)
            Next
            Application("chatline_1") = "<span class='LoggedOut'>" & Application.StaticObjects.Item("conquerChat").Item(arUserTimes(timeIdx)) & " blev logget af " & time() & "</span><br>"
           
            Application.StaticObjects.Item("conquerChat").Remove(arUserTimes(timeIdx))
            Application.StaticObjects.Item("conquerChatTime").Remove(arUserTimes(timeIdx))
           
            Application.UnLock
           
        End If
    Next
   
    If ( CLEAR_ON_EMPTY AND (Application.StaticObjects.Item("conquerChat").Count = 0) ) Then
        ' clear all messages
        Application.Lock
        For i = 1 To MESSAGES
            Application("chatline_" & i) = ""
        Next
        Application.UnLock
    End If
   
    ' print all messages in window
    For i = 1 To MESSAGES
        Response.Write Application("chatline_" & i) & ""
    Next
   
%>

</body>
</html>
Avatar billede casperlundhansen Nybegynder
15. februar 2004 - 22:24 #19
Giver gerne flere points
Avatar billede casperlundhansen Nybegynder
16. februar 2004 - 19:01 #20
Lukker
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