phpbar.de logo

Mailinglisten-Archive

[php] Von STDIN lesen (Passworteingabe)

[php] Von STDIN lesen (Passworteingabe)

Mathias Gloss mgloss at amadeus.net
Fre Aug 20 08:37:26 CEST 2004


Aloha,




> From: Roland Tapken <ml at lalamuhkuh.de>@phpbar.de  on 20.08.2004 01:47 
ZE2

> Ich will gerade mit PHP eine kleine Passworteingabe basteln... aber
> dummerweise zeigt PHP die Eingaben sofort an. Kann ich das irgendwie
> verhindern? Hier der Code:

> if(!defined("STDIN"))
>   define("STDIN", fopen('php://stdin','r'));
> $password = trim(fread(STDIN, 1024));

Das Problem liegt nicht daran, daß PHP die Eingabe anzeigt, sondern
daß das Terminal deine Eingabe anzeigt.

D.h. wenn du das Passwort eintippst, dann wird das (wie alle anderen
Eingaben auch) vom Terminal angezeigt. PHP liest zwar die Eingabe
über STDIN, schieb sie aber nicht wieder auf STDOUT raus.

Was man dagegen tun kann, ist vom verwendeten Betriebssystem abhängig.
Unter Linux kann man das Terminal vor der Eingabe in einen No-Echo-Modus
schalten, so daß keine Ausgaben erfolgen und dann per PHP ein * für 
jedes Zeichen ausgeben.
Hinterher wieder Echomodus einschalten.

Dazu müsstest du aber auch dein Script noch etwas ändern, so daß die
Eingabe in einer Schleife Zeichenweise (Ende bei \n) und nicht Zeilenweise 

gelesen wird.

Grüße, Mathias




php::bar PHP Wiki   -   Listenarchive