Ankündigung

Einklappen
Keine Ankündigung bisher.

login mit begrenzten zeitlimit

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • m291
    hat ein Thema erstellt login mit begrenzten zeitlimit.

    login mit begrenzten zeitlimit

    hallo,

    also ich habe zur zeit schon ein einfaches login script laufen. nun wollte ich es erweitern, so dass die zugangsdaten nur eine bestimmte zeit gültig sind.

    Nutzung:
    User (Freunde/Bekannte) fragt mich, ob er ein Kennwort (genannt von mir session.key) bekommt. Ich erstelle ihm, per script, ein neuen session.key in der Datenbank. Bestehend aus ID, Kennwort, Zeitstempel (mit NOW()). Ich schicke dem User den session.key. Beim einloggen checkt das Loginscript, ob der session.key in der Tabelle vorhanden ist (es soll keine User geben. Alles geht nur über diesen session.key) und ob der key noch gültig ist.

    jetzt die frage, wie mach ich die abfrage fürs login script. bisher habe ich nur, dass die ersten 5 ids/session.keys rein dürfen (unabhängig von der gültigkeit):

    PHP-Code:

    $sql 
    "SELECT ".  
        
    "Id, Kennwort, Zeit ".  
      
    "FROM ".  
        
    "benutzerdaten ".  
      
    "WHERE ".  
        
    "Id <= 5 AND ".  
        
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    Jetzt brauch ich die ganze abfrage so, dass die ersten 5 ids/session.keys ohne begrenzte gültigkeit rein dürfen und alle ids ab 6 nur mit einer begrenzung von 12h gültigkeit (seit der erstellung in der datenbank, siehe Spalte Zeit) einlass haben.

    Hoffe ihr versteht mein Wirrwarr

    Gruß Maxim

  • Flor1an
    antwortet
    Ja.

    Einen Kommentar schreiben:


  • m291
    antwortet
    das noch besser! Danke.

    Sag mal, ich kann doch auch
    Code:
    id > 6
    weglassen oder? Weil entweder greift er auf die unteren 5 id oder schaut aufs datum, oder?

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Oder auch:

    Code:
    Zeit >= DATE_SUB( NOW(), INTERVAL 12 HOUR)

    Einen Kommentar schreiben:


  • m291
    antwortet
    Zitat von Flor1an Beitrag anzeigen
    Code:
    Zeit >= NOW() - 12 Stunden
    das ist meine lösung:

    PHP-Code:
    (Zeit BETWEEN DATE_ADDNOW(), INTERVAL -12 HOUR) AND NOW()) 
    war gar nicht so einfach

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    In SQL kannst du nicht schreiben "- 12 Stunden". Das war doch nur als Denkanstoß gemeint! Du musst schon die entsprechenden Funktionen raus suchen die so etwas liefern.

    Einen Kommentar schreiben:


  • m291
    antwortet
    So, habe mal das ganze probiert, aber bekomme dann Fehlermeldung:

    Code:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/htdocs/w005a1c9/login/check.php on line 20
    
    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w005a1c9/login/check.php:20) in /www/htdocs/w005a1c9/login/check.php on line 34
    Das habe ich für den Login-Check:

    PHP-Code:
    // Session starten 
    session_start (); 

    // Datenbankverbindung aufbauen  
    $connectionid mysql_connect ("localhost""XXX""XXX");  
    if (!
    mysql_select_db ("XXX"$connectionid))  
    {  
      die (
    "Keine Verbindung zur Datenbank");  
    }  

    $sql "SELECT ".  
        
    "Id, Kennwort, Zeit ".  
      
    "FROM ".  
        
    "benutzerdaten ".  
      
    "WHERE ".  
        
    "(Id <= 5 OR (Id > 6 AND Zeit >= NOW() - 12 Stunden)) AND (Kennwort = '".md5 ($_REQUEST["pwd"])."')";  
    $result mysql_query ($sql);  

    if (
    mysql_num_rows ($result) > 0)  
    {  
      
    // Benutzerdaten in ein Array auslesen.  
      
    $data mysql_fetch_array ($result);  

      
    // Sessionvariablen erstellen und registrieren  
      
    $_SESSION["user_id"] = $data["Id"];  
      
    $_SESSION["user_nickname"] = $data["Nickname"];  
      
    $_SESSION["user_name"] = $data["Name"];

      
    header ("Location: http://XXX/friends");  
    }  
    else  
    {  
      
    header ("Location: http://XXX/login/fail.php");  


    SQL hatte ich in der Schule, weil ich einen IT Beruf gelernt habe. Fand ich sehr interessant. Aber leider wurd ich daraus kein PHP/SQL Profi. Was ich gerne wäre

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Na du hast doch gemeint du Speicherst in der Spalte "Zeit" den Zeitpunkt wo du den Schlüssel generierst. Und der soll eben 12h gültig sein. Bei der Abfrage überprüf ich das eben.

    Ihr habt in der Schule SQL gelernt?

    Einen Kommentar schreiben:


  • m291
    antwortet
    Zitat von Flor1an Beitrag anzeigen
    Mal nen Denkansatz:

    Code:
    (id <= 5 OR (id > 6 AND Zeit >= NOW() - 12 Stunden)) AND Kennwort = ...
    mehr ist das nicht? oh man, ich hatte halt in der schule zu wenig sql unterricht. Wusste nicht, dass man das alles so schön verschachteln kann.
    Wie ist das mit dem
    Code:
    Zeit >= NOW() - 12 Stunden
    . Was heißt das übersetzt? Zeit ist größergleich Uhrzeit(jetzt) vor 12 h?

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Mal nen Denkansatz:

    Code:
    (id <= 5 OR (id > 6 AND Zeit >= NOW() - 12 Stunden)) AND Kennwort = ...

    Einen Kommentar schreiben:

Lädt...
X