我花了几个小时试图找到一种在php中编写跨平台密码提示的方法,该提示隐藏了用户输入的密码.虽然这可以通过使用stty -echo在Unix环境中轻松完成,但我尝试了各种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脚本包装在批处理文件中并将密码作为命令行参数传递,但在这种情况下,这对我不起作用.
似乎没有PHP的IOCTL或STTY扩展.我在这里发现了以下技巧: