我花了几个小时试图找到一种在 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 扩展。我发现了以下技巧here:
<?php
echo 'Password: ';
$pwd = preg_replace('/\r?\n$/', '', `stty -echo; head -n1 ; stty echo`);
echo "\n";
echo "Your password was: {$pwd}.\n";
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)