Alex: Fensterinhalt löschen und überschreiben nach timeout

Hallo Leute

In meinem neuen Script kommt eine Passwortabfrage vor.
Bei falschem Passwort, möchte ich eine Meldung ausgeben:
"falsches Passwort"
Jetzt kommts: nach 3 Sekunden Pause soll das Eingabefeld für das Passwort wieder erscheinen.

Mein nicht funktionierender Lösungsgedanke war etwa so:
echo"<!DOCTYPE blah blah blah
<h1>falsches Passwort</h1>";

sleep(3);

echo"<INPUT TYPE="password" usw.
</HTML>";

Abgesehen davon, dass so nur ein halbes Dokument geschrieben und erst nach 3 Sekunden abgeschlossen werden würde, funktionierts eh nicht, da zuerst sleep() ausgeführt wird, egal wieviele echo"";s davor stehen.

Wie komme ich zu meiner dramatischen Pause?
Kann ich das Fenster clearen und neu reinschreiben?

Danke für Eure Tipps!

*Alex*

  1. hi,

    Wie komme ich zu meiner dramatischen Pause?

    Mit Javascript: window.setTimeout

    Kann ich das Fenster clearen und neu reinschreiben?

    Mit PHP? Nein. PHP weiß nichts von irgendeinem Konstrukt namens "Fenster".

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Wie komme ich zu meiner dramatischen Pause?

      Mit Javascript: window.setTimeout

      Kann ich das Fenster clearen und neu reinschreiben?

      Mit PHP? Nein. PHP weiß nichts von irgendeinem Konstrukt namens "Fenster".

      Aber vielleicht kann ich mein php-Dokument nochmal aufrufen und von vorne anfangen zu schreiben?

      gruß,
      wahsaga

  2. Hello Alex,

    warum soll dier erneite Eingabemöglichkeit nicht gleich zusammen mit der Fehlermeldung:

    Anmeldedaten waren falsch,
      bitte versuchen Sie es erneut:

    +-------------------------+
      |                         |
      +-------------------------+

    +-------------------------+
      |                         |
      +-------------------------+

    kommen?
    Das finde ich irgendwie ergonomischer, als zeitgesteuerte Abläufe, die der User nicht sofort überschauen kann.

    Wenn Du es anders willst, muss Tu den Client eben beim der ersten Anforderung aus der Startseite heraus auf JavaScript prüfen, und darauf vertrauen, dass Deine Prüfung auch funktioniert. Dann kannst Du die Seite nach drei Sekunden neu laden lassen mit einem Parameter, damit der Server dann die Eingabefelder neu anbietet.

    Was ist aber mit den Usern, die schneller sind, als die ihnen unbekannte Wartezeit, oder aber kein Scripting am Client unterstützen?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hallo Tom

      Es handelt sich um eine Admin-Seite, auf die alle paar Tage EINE Person zugreifen wird um über eine Maske Dateien hochzuladen und Inhalte zu aktualisieren.
      Ich kenne mich mit PHP viel zu schlecht aus und suche gerade nach Möglichkeiten z.B. den MIME-TYPE der hochgeladenen Dateien nochmal zu prüfen, was ich auch schon echt schwierig finde.
      Es gibt halt böse Menschen, die können ihre virus.exe locker in harmlos.jpg umbenennen etc.
      Ich möchte verhindern, dass solche gemeinen Leute überhaupt in die Eingabemaske kommen.
      Deshalb Passwort.
      Aber es gibt auch abertausende von bruteforce-scripten und kids, die sie unbedingt ausprobieren wollen.
      Deshalb timeout. Deshalb kein JavaScript.
      Was sieht denn dann mein lieber regulärer Admin-Benutzer?
      Eine Meldung "falsches Passwort" darunter ein Eingabefeld, in das er was reinschreiben kann, er schickt ab und...
         es passiert garnix
      im ungünstigen Fall klickt er nochmal abschicken und das delay geht von vorne los - das ist doch doof!
      Ich würde ja ein
      echo"<meta http-equiv="refresh" content="3;URL="$self">";
      ausgeben, aber die Weiterleitung kann man soviel ich weiß auch Userseitig beeinflussen.
      Deshalb sleep();

      Verstehst Du mich?

      *Alex*

      1. Hallo alex,

        Ich würde ja ein
        echo"<meta http-equiv="refresh" content="3;URL="$self">";
        ausgeben, aber die Weiterleitung kann man soviel ich weiß auch Userseitig beeinflussen.

        Die einzige Möglichkeit, die mir bekannt ist, ist nunmal das lustige Meta-Refresh-Tag im HTML-Header.

        PHP kann zwar Weiterleitungen machen, aber nur "server-seitig", das heißt: Wenn der Browser eine URL anfordert, kann man mit PHP darauf reagieren und über eine HTTP-Redirection (Statuscodes: 301/302) zu einer anderen URL weiterleiten. Dazu benutzt man den header-Befehl.

        Deshalb sleep();

        Eine mit sleep() eingebaute Verzögerung ist schlicht und ergreifend Mist.
        Sleep ist böse: http://de.php.net/manual/de/function.sleep.php#52735

        MffG
        EisFuX

        --
        ... Suchmaschinen-Blog ...