ユーザーが入力したパスワードを非表示にするクロスプラットフォームのパスワードプロンプトをphpで作成する方法を見つけるのに数時間を費やしました。これは Unix 環境では stty -echo を使用して簡単に実現できますが、passthru() および system() 呼び出しのさまざまな方法を試して、Windows で同じことを実行しても無駄でした。
私が試してみました:
passthru('set /p pass=Password: ');
system('echo %pass% > out.txt');
$pass = file_get_contents('out.txt', 'r');
これは passthru('set /p pass=Password: '); でハングしているようです。テキストを入力することを許可せずに行を削除し、Ctrl-c で強制終了する必要があります。
また、fgetc と fgets のさまざまな方法を試し、バックスペース文字を出力して入力を非表示にしました。これは他の言語でも機能するためです。ただし、PHP はキャリッジ リターンの前のテキストとやり取りできないようです。
これを機能させる方法を本当に見つけたいのですが、これは不可能な作業ですか、それともできることですか?
php スクリプトをバッチ ファイルにラップして、パスワードをコマンド ライン引数として渡すことができることは承知していますが、この場合はうまくいきません。