Avatar billede patrickbeck Nybegynder
15. maj 2009 - 17:58 Der er 12 kommentarer og
1 løsning

Dobble Session

hvordan laver jeg denne om saa der er

If Session("UserName") <> "" Then

og der er et fast brugernavn der har adgang.

noget i denne retning:

If Session("UserName") or Session("admin") <> "" Then

kan ikke faa den rigtig... siden melder bare fejl
Avatar billede keysersoze Guru
15. maj 2009 - 17:59 #1
If Session("UserName") <> "" or Session("admin") <> "" Then
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:10 #2
ja det var rigtig... men det virket ikke lige som jeg ville have det..

det den skulle kunne var at hvis det er den rigtige bruger eller admin saa skulle den vise email i inbox.

mit problem er nu at det virker men fordi jeg ogsaa har If Session("UserName") <> "" saa gaar den jo klart til min inbox og ikke den brugers inbox jeg ville se.

jeg ved ikke om man kan lave noget i denne retning

<%
Dim strLoginFormAction As String = Request.ServerVariables("SCRIPT_NAME") & "?" & Request.QueryString.ToString()

Dim strAdminLink As String = ""
If Session("UserName") = "admin" Then
    strAdminLink = "&nbsp;&nbsp;&nbsp;<a href=messages.aspx>vis inbox</a>"
End If
%>

eller hvad der er af losning.

jeg smider lige lidt code op.

If Session("UserName") <> "" or Session("damslund") <> "" Then
        Dim objConnection As New OdbcConnection(ConfigurationSettings.AppSettings("DB_CONNECTION_STRING"))
        Dim objCommand As New OdbcCommand()
        objCommand.Connection = objConnection
        objConnection.Open()
        'Postback is only for deleting messages.
        If Page.IsPostBack Then
            Dim strFormID As String = Request.Form("ID")
            strFolder = Request.Form("formfolder")
            If strFormID <> "" Then
                Dim strDelete As New StringBuilder()
                'Build the UPDATE statement for "deleting" the messages.
                Select Case strFolder
                    Case "inbox"
                        strDelete.Append("UPDATE messages SET DeletedByRecipient=1 " & _
                        "WHERE RecipientID=" & Session("ProfileID") & " AND MessageID=")
                    Case "sent"
                        strDelete.Append("UPDATE messages SET DeletedBySender=1 " & _
                        "WHERE SenderID=" & Session("ProfileID") & " AND MessageID=")
                End Select
                'A single message.
                If strFormID.indexOf(",") = -1 Then
                    strDelete.Append(strFormID & ";")
                Else 'Multiple messages.
                    Dim arrayIDs() As String = strFormID.Split(",")
                    strDelete.Append(arrayIDs(0))
                    Dim intIndex As Integer
                    For intIndex = 1 to arrayIDs.length - 1
                        strDelete.Append(" OR MessageID=" & arrayIDs(intIndex))
                    Next
                    strDelete.Append(";")
                End If
                objCommand.CommandText = strDelete.ToString()
                objCommand.ExecuteNonQuery()
                'DELETE the message permanently if both sender and recipient deleted the message.
                'NOTE: this saves space, but "deleted" messages might need to be saved for legal reasons.
                objCommand.CommandText = "DELETE FROM messages " & _
                    "WHERE DeletedBySender=1 AND DeletedByRecipient=1;"
                objCommand.ExecuteNonQuery()
            End If
        End If 'Page.IsPostBack
        'Handle the sorting.
        Dim strSortColumn As String = Request.QueryString("sortby")
        If strSortColumn <> "" Then
            'Make sure QueryString has not been tampered with by adding additional SQL.
            If InStr(strSortColumn," ") = 0 Then
                strSortColumn = " ORDER BY " & strSortColumn & ";"
            Else
                strSortColumn = " ORDER BY MessageDate;"
            End If
        Else
            strSortColumn = " ORDER BY MessageDate;"
        End If
        'Determine which folder to view.
        strFolder = Request.QueryString("folder")
        If strFolder = "" Then
            If Session("MessageFolder") <> "" Then
                strFolder = Session("MessageFolder")
            Else
                strFolder = "inbox"
            End If
        ElseIf Not(strFolder <> "inbox" OR strFolder <> "sent") Then
            strFolder = "inbox"
        End If
        Session("MessageFolder") = strFolder
        'Get the number of unread messages.
        objCommand.CommandText = "SELECT Count(*) FROM messages " & _
            "WHERE RecipientID=" & Session("ProfileID") & " AND " & _
            "DeletedByRecipient=0 AND MessageRead=0"
        intNewRecords = CInt(objCommand.ExecuteScalar())
        'Determine which SELECT statement to use for getting the number of messages,
        'and the message data.
        Dim strGetTotalCount As String
        Dim strGetData As String
        If strFolder = "sent" Then
            strGetTotalCount = "SELECT Count(*) FROM messages " & _
                "WHERE SenderID=" & Session("ProfileID") & " AND " & _
                "DeletedBySender=0;"
            strGetData = "SELECT m.MessageID,m.MessageDate,m.MessageRead," & _
                "m.Subject,p.UserName FROM messages m INNER JOIN profiles p " & _
                "on m.RecipientID = p.ProfileID WHERE SenderID=" & Session("ProfileID") & _
                " AND DeletedBySender=0" & strSortColumn
            strFirstColumnName = "To"
            strTitle = "Sent Messages"
        Else
            strGetTotalCount = "SELECT Count(*) FROM messages " & _
                "WHERE RecipientID=" & Session("ProfileID") & " AND " & _
                "DeletedByRecipient=0"
            strGetData = "SELECT m.MessageID,m.MessageDate," & _
                "m.Subject,m.MessageRead,p.UserName FROM messages m INNER JOIN profiles p " & _
                "on m.SenderID = p.ProfileID WHERE RecipientID=" & Session("ProfileID") & _
                " AND DeletedByRecipient=0" & strSortColumn
            strFirstColumnName = "From"
            strTitle = "Inbox"
        End If
        objCommand.CommandText = strGetTotalCount
        intRecords = CInt(objCommand.ExecuteScalar())
        'Bind the messages to the data list.
        If intRecords > 0 Then
            objCommand.CommandText = strGetData
            msgDataList.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
            msgDataList.DataBind
            blnHasData = true
            strMessageLink = "seemsg.aspx?folder=" & strFolder & "&amp;sortby=" & Request.QueryString("sortby")
        End If
        objConnection.Close()
Avatar billede keysersoze Guru
15. maj 2009 - 18:19 #3
Jeg ved ikke hvordan du har defineret dine sessions så det er så godt som umuligt at give et rigtigt svar...

If Session("UserName") == "Hans" or Session("admin") <> "" Then
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:22 #4
hjaelper dette:

Public LOGIN_strErrorMessage As String

Public Sub ProcessLogin()
    If Request.Form("logout") = "yes" Then
        Session("UserName") = ""
        Session.Abandon()
        Response.Redirect("/default.aspx?logout=yes")
    ElseIf Request.Form("login") = "yes" Then
        Dim strUserName As String = Request.Form("username")
        Dim strPassword As String = Request.Form("password")
        Dim strRegex As String = "^[a-z0-9A-Z_]{4,16}$"
        'Check if username or password is invalid.
        If Not(Regex.IsMatch(strUserName, strRegex)) OR Not(Regex.IsMatch(strPassword, strRegex))
            LOGIN_strErrorMessage = "You entered an invalid user name or password."
        Else
            Dim intProfileID As Integer
            Dim intProfileStatusID As Byte
            Dim objConnection As New OdbcConnection(ConfigurationSettings.AppSettings("DB_CONNECTION_STRING"))
            Dim objDataReader As OdbcDataReader
            Dim strSQL As String = "SELECT ProfileID,UserName," & _
                "ProfileStatusID FROM profiles WHERE UserName='" & strUserName & "'" & _
                " AND Password=MD5('" & strPassword & "');"
            Dim objCommand As New OdbcCommand(strSQL, objConnection)
            Try
                objConnection.Open()
                objDataReader = objCommand.ExecuteReader()
                If objDataReader.Read() Then
                    intProfileID = objDataReader("ProfileID")
                    strUserName = objDataReader("UserName")
                    intProfileStatusID = CByte(objDataReader("ProfileStatusID"))
                Else
                    LOGIN_strErrorMessage = "You entered the wrong user name or password."
                End If
                objDataReader.Close()
                Select Case intProfileStatusID
                    Case 1
                        LOGIN_strErrorMessage = "Your profile needs to be activated. Click " & _
                            "<a href='/activateprofile.aspx' class='stayBlue'>here</a> " & _
                            "to activate your profile."
                    Case 2
                        Session("ProfileID") = intProfileID
                        Session("UserName") = strUserName
                        Session("MessageFolder") = ""
                        objCommand.CommandText = "UPDATE profiles SET LoginDate=NOW() " & _
                            "WHERE ProfileID=" & intProfileID & ";"
                        objCommand.ExecuteNonQuery()
                    Case 3
                        LOGIN_strErrorMessage = "Your profile has been suspended."
                End Select
                objConnection.Close()
            Catch excep as Exception
                LOGIN_strErrorMessage = "The database is busy. Please try again later."
            End Try
        End If
    End If
End Sub
Avatar billede keysersoze Guru
15. maj 2009 - 18:26 #5
If Session("UserName") == "Hans" Then
?
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:31 #6
den forstaar jeg ikke..

maske er det letter at lave noget admin delen..
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:32 #7
tror jeg er nod til at lave om paa hele Session metoden...
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:39 #8
lige nu kigger den kun paa den Session der er logget ind og ikke paa den brugers profil id som jeg ville se mail inbox fra.

saa den skal kunne se bort fra min id og tage iden fra den profil jeg ville se.. taenker paa om det ikke skal gores med et link der kommer frem naar det er mit brugernavn og paa den maade ville min inbox virke og jeg kan komme til brugerens inbox ogsaa.
Avatar billede keysersoze Guru
15. maj 2009 - 18:48 #9
Så må jeg melde pas - forstår ikke helt problemstillingen desværre. Men som udgangspunkt er det ikke særlig smart at hardcode fx brugernavne - det skal styres vha rettigheder.

Men når nu du laver .net - hvorfor så ikke kigge på Membershipprovideren?
Avatar billede patrickbeck Nybegynder
15. maj 2009 - 18:55 #10
ja det er heller ikke let... ville nok bruge natten paa det...

Tak for hjaelpen..
Avatar billede patrickbeck Nybegynder
16. maj 2009 - 00:26 #11
kunne ikke finde en losning paa dette saa ville prove at lave en andet losning..
Avatar billede keysersoze Guru
16. maj 2009 - 11:08 #12
Du kunne jo også prøve at forklare lidt bedre eller kigge på membershipprovideren - men det bestemmer du selvfølgelig selv...
Avatar billede patrickbeck Nybegynder
16. maj 2009 - 12:41 #13
ohh jeg ville meget gerne give en bedre forklaring..

jeg har oprettet dette sporgsmal

http://www.eksperten.dk/spm/875196

det beskriver hvad jeg skal med det.
Det er bare en admin del jeg skal bruge for mit site og tankte at det ville vaerte letter bare at lave en Session saa jeg ville faa vist nogle admin link ud for hvor bruger saa ville jeg slette dem, see deres emails hvis der har vare klager.

der er lige nu intet i admin delen der kan styere dette.

Jeg ved bare ikke hvad den lettes losning er.

Du kan se siden her: www.bandinjee.com

hvis det hjaelper med en kopi af mine database tabeller kan jeg laegge dette op.
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