Mailinglisten-Archive |
Aloha,
> From: Roland Tapken <ml at lalamuhkuh.de>@phpbar.de on 20.08.2004 13:54
ZE2
> > 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.
> Ok, weiß jemand wie das (unter Linux) geht :)?
mit etwas googeln und kurzem Test:
#!/usr/bin/php4 -q
<?
$sTermconfig = `stty -g`;
`stty -echo`;
echo "Bitte Passwort eingeben:\n";
$rF = fopen('php://stdin', 'r');
$sPasswort = '';
while ( false !== ( $sZeichen = fgetc($rF) ) ) {
if ( $sZeichen == "\n" ) { break; }
$sPasswort .= $sZeichen;
echo '*';# tut hier nicht wirklich mit der Zeichen-
flush(); # weisen Ausgabe der Sterne :-//
}
echo "\nDas Passwort ist: $sPasswort\n";
`stty $sTermconfig`;
?>
man beachte, daß mit den ` (genannt Backticks) das zu-
grundelegende Betriebssystemkommando ausgeführt wird und
die Ausgabe dessen zurückgegeben wird.
Warum auch immer klappt das mit der Zeichenweise Ausgabe
der Sterne NICHT - trotz flush() *grumpf*
Sachdienliche Hinweise werden gerne noch entgegengenommen.
Grüße, Mathias
php::bar PHP Wiki - Listenarchive