Torwächter: User x Tage auf eine Seite lassen (sehr schwer)

Hallo nochmal,

ich muss nun doch anderst fragen.
Nochmal, ich habe einen Bereich auf meiner Hompage, der kostenpflichtig ist.

-User bezahlt.
-User soll 10 Tage Zugang bekommen.

Ich habe (soweit ich weiß) alles zur Verfügung, was man brauchen könnte:

-eigener Server (Apache) auf WinMe (noch später NT oder Linux)
-.htacces Schutz
-Perl

Habt Ihr eine Idee, wie ich die User nur 10 Tage drauf lassen kann ?
Mein Problem ist auch, dass sich evtl. ein User mit Flatrate einloggt und dann ..naja.. ewig draufbleiben kann, daher müßte bei jederm Zugriff (vielleicht Serverseitig) das "Kick"Datum gecheckt werden.

Ich bedanke mich für eure Mühe.

Viele Grüße
Torwächter

  1. Hallo Torwächter,

    mach es doch mit php und einer SessionID, die Du dann noch zusätzlich per Cookie auf dem Client abspeicherst.
    So kannst Du abfragen wer es ist und wann er sich zum ersten Mal (bezahlt) in den Bereich eingeloggt hat.

    Gruss
    tommy

  2. Hi

    ich muss nun doch anderst fragen.
    Nochmal, ich habe einen Bereich auf meiner Hompage, der kostenpflichtig ist.

    -User bezahlt.
    -User soll 10 Tage Zugang bekommen.

    Ich habe (soweit ich weiß) alles zur Verfügung, was man brauchen könnte:

    -eigener Server (Apache) auf WinMe (noch später NT oder Linux)

    WinME für einen Server? Ist wohl der Testrechner im Intranet oder?

    -.htacces Schutz
    -Perl

    MySQL-DBS wäre gut.

    Habt Ihr eine Idee, wie ich die User nur 10 Tage drauf lassen kann ?

    User loggt sich ein. Username, Passwort & Datum des ersten Besuchs sind in MySQL-DB. Wenn der User sich einloggt setzst du eine Sessionvariable mit einem Timeout. Bei jedem Seitenaufruf wird geprüft, ob die Sessionvarable ok ist, wenn nicht -> Login.

    Beim Login checkst du Username, Passwort und ob das Datum abgelaufen ist. Wenn alles OK ist setzst du die Sessionvariable.

    Ich habe jedoch keine Ahnung, wie solche Sessionvariablen bei Perl funktionieren, bei ASP wird beim User ein Cookie gesetzt. Ich denke, dass dies mit Perl ähnlich funktioniert.

    Mein Problem ist auch, dass sich evtl. ein User mit Flatrate einloggt und dann ..naja.. ewig draufbleiben kann, daher müßte bei jederm Zugriff (vielleicht Serverseitig) das "Kick"Datum gecheckt werden.

    Sobald er einen Link anklickt oder die Seite aktualisiert und das Timeout abgelaufen ist wird er zum Login geleitet.

    MfG

    Tom2

  3. Moin!

    ich muss nun doch anderst fragen.
    Nochmal, ich habe einen Bereich auf meiner Hompage, der kostenpflichtig ist.

    -User bezahlt.
    -User soll 10 Tage Zugang bekommen.

    Du brauchst eine vernünftige Userverwaltung, so wie es aussieht. :)

    Ich habe (soweit ich weiß) alles zur Verfügung, was man brauchen könnte:

    -eigener Server (Apache) auf WinMe (noch später NT oder Linux)
    -.htacces Schutz
    -Perl

    Eine Datenbank wäre nicht zu verachten. MySQL oder so. Und dazu passend würde PHP eine gute Figur machen. Dagegen macht der WinME-Server nun absolut garkeine Figur - schmeiß den sofort weg, nimm Linux (die beste Lösung) oder wenigstens ein WinNT (die drittbeste Lösung - die zweitbeste wäre: Nimm Linux - um einen gewissen Abstand zwischen Linux und NT zu schaffen, hehe ;) ).

    Habt Ihr eine Idee, wie ich die User nur 10 Tage drauf lassen kann ?

    Vom Prinzip her: Wenn du HTTP-Authentifizierung einbaust (das ist in klassischer Weise per .htaccess zu machen), dann kannst du selbstverständlich nach 10 Tagen den Zugang durch Entfernen des Paßwortes wieder schließen. HTTP ist ja schließlich ein verbindungsloses Protokoll, d.h. der User kann sich zwar am ersten Tag die Startseite runterladen und dann 10 Tage ansehen - sobald er aber einen weiteren Klick macht, wird erneut eine Verbindung hergestellt, eine neue Datei angefordert, und erneut die Authentifizierung geprüft. Das gilt auch für jedes Bild etc, was geladen werden muß: Alles, was per HTTP vom Server kommt, ist gesichert.

    Du mußt also in irgendeiner Weise dafür sorgen, daß der User bei der Anmeldung Zugriff bekommt (beispielsweise, indem er dann in die .htpasswd eingetragen wird - das aber bitte nur als letzte Variante nehmen, wenn garnichts anderes mehr geht), und den Zugriff nach Ablauf der Zeit wieder entfernen (z.B. durch Löschen der eingetragenen Zeile.

    Viel schöner geht sowas natürlich datenbankgestützt, indem du beispielsweise (wie ich entdecken durfte) eine Datenbank anstelle der .htpasswd benutzt (das funktioniert nämlich nicht nur mit Textdateien!), oder indem du ein Skript benutzt, welches die Authentifizierung seinerseits prüft (und auch deren Ablauf). Mit PHP (aber vermutlich nicht nur damit) kann man den üblichen .htaccess-Authentifizierungsdialog ebenfalls programmieren - er läuft dann auch genauso im Browser ab - und es sollte ein leichtes sein, den User bei jedem Zugriff auf Ablauf des Zugangszeitraumes zu prüfen.

    Einen kleinen Schönheitsfehler hat diese Lösung allerdings: Ich hab sie noch nie realisiert und ausprobiert, deshalb keine Haftung für Sicherheitslücken, die du in das System einbaust. :)

    - Sven Rautenberg