phpbar.de logo

Mailinglisten-Archive

[php] Von STDIN lesen (Passworteingabe)

[php] Von STDIN lesen (Passworteingabe)

Mathias Gloss mgloss at amadeus.net
Fre Aug 20 15:06:48 CEST 2004


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