tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1129
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von StefanR
    StefanR StefanR ist offline Mitglied Platin
    Registriert seit
    Apr 2003
    Ort
    Hude
    Beiträge
    582
    Hallo,

    ich bin gerade dabei mich in CSharp einzuarbeiten, bisher gefällt mir das sehr gut obwohl ich ursprünglich aus dem PHP Bereich komme.

    Jetzt hab ich da ein leichtes Verständnisproblem. Und zwar bastel ich an einer kleinen Applikation, welche ein Login Formular zur Verfügung stellen soll, wenn kein Nutzer angemeldet ist, ist einer angemeldet, soll der eigentliche Spaß beginnen. Die Nutzerdaten liegen in einer MySQL Datenbank und die Kommunikation zwischen Server und Klient passt auch schon nur halt wie gesagt, wie und wo ich speichern kann, wer gerade angemeldet ist und ob überhaupt jemand angemeldet ist, weiß ich grad net.

    Wie könnte man das am Besten/Simpelsten lösen?

    Beste Grüße STefan
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Hallo,

    1.Einen Nutzer einloggen

    Am einfachsten ist es folgendermaßen. Der Nutzer gibt Name+Passwort ein. Danach wird ein SELECT ausgeführt
    Code :
    1
    
    "SELECT mitgliedernummer FROM mitglieder WHERE name=@name AND passwort=@passwort;"
    Wenn das SELECT einen Datensatz liefert, logst du den Nutzer so ein:
    Code :
    1
    
    HttpContext.Current.Session.Add("mitgliedernummer",>>Hier die ausgelesene id des Nutzers als string, int oder als anderes object(DataTable,DataRow....)<<).
    Überprüfen ob oder eingeloggt ist:
    Code :
    1
    
    if(HttpContext.Current.Session["mitgliedernummer"]!=null)


    2.Sehen wer alles eingeloggt ist

    Ich mache das zurzeit mit der mysql-Datanbank. Dort hab ich in der Mitgliedertabelle eine Spalte "lastactivity" als datetime, welche bei jedem Seitenaufruf auf NOW() gesetzt wid. Dann kann man alle Nutzer auslesen, welche in den letzten Minuten online waren.

    Denkbar wäre es auch, die Daten im Anwendungsspeicher zu speichern. Anders als bei Sessions, hat hier jeder Client Zugriff. Also mach bei jedem Seitenaufruf folgendes:
    Code :
    1
    2
    3
    4
    5
    
    if(HttpContext.Current.Session["mitgliedernummer"]!=null)
    {
    HttpContext.Current.Cache.Remove(HttpContext.Current.Session["mitgliedernummer"].ToString());     
    HttpContext.Current.Cache.Add(HttpContext.Current.Session["mitgliedernummer"].ToString(), null, null, null, new TimeSpan(0, 0, 30), System.Web.Caching.CacheItemPriority.Default, null);
    }
    Im oberen Beispiel wird ein Eintrag im Anwendungsspeicher erstellt. Der Key ist dabei die ID des Mitgliedes. Einen Inhalt hat der Eintrag nicht (null). Außerdem zerfällt der Eintrag nach 30 Sekunden (das Timespan Objekt). Jetzt kannst du ganz einfach von jedem Client aus überprüfen, ob ein anderen Nutzer eingeloggt ist, indem du überprüfst, ob im Anwendungsspeicher ein Eintrag vorhanden ist.

    Gruß
     

Ähnliche Themen

  1. csharp gps
    Von Kluse im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 22.05.08, 20:14
  2. Csharp Taschenrechner
    Von Trax5 im Forum .NET Café
    Antworten: 16
    Letzter Beitrag: 27.06.07, 14:43
  3. Komplexes Session/Cookie Management
    Von nullpunkt im Forum PHP
    Antworten: 6
    Letzter Beitrag: 23.04.05, 20:23
  4. Problem mit Session-Management
    Von Moritz123 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.12.04, 12:57
  5. tutorial workaholic session-management
    Von fragemann im Forum PHP
    Antworten: 10
    Letzter Beitrag: 02.06.03, 12:56