首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP中的命令行密码提示

PHP中的命令行密码提示
EN

Stack Overflow用户
提问于 2008-10-09 15:13:38
回答 11查看 46.4K关注 0票数 81

我正在写一个命令行工具来帮助我的web应用程序。它需要密码才能连接到服务。我希望脚本显示一个密码提示符,这样我就不必将其作为命令行参数传递。

这很简单,但我希望它在输入密码时不会在屏幕上出现回声。我怎么用PHP做到这一点呢?

如果使用纯PHP (没有system('stty'))并用*替换字符,这会给你加分。

编辑:

该脚本将在类似unix的系统(linux或mac)上运行。该脚本是用PHP编写的,并且很可能会一直保持原样。

另外,根据记录,stty执行此操作的方式如下:

代码语言:javascript
复制
echo "Password: ";
system('stty -echo');
$password = trim(fgets(STDIN));
system('stty echo');
// add a new line since the users CR didn't echo
echo "\n";

我不想把system()调用放在里面。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-11-04 22:41:55

sitepoint上找到。

代码语言:javascript
复制
function prompt_silent($prompt = "Enter Password:") {
  if (preg_match('/^win/i', PHP_OS)) {
    $vbscript = sys_get_temp_dir() . 'prompt_password.vbs';
    file_put_contents(
      $vbscript, 'wscript.echo(InputBox("'
      . addslashes($prompt)
      . '", "", "password here"))');
    $command = "cscript //nologo " . escapeshellarg($vbscript);
    $password = rtrim(shell_exec($command));
    unlink($vbscript);
    return $password;
  } else {
    $command = "/usr/bin/env bash -c 'echo OK'";
    if (rtrim(shell_exec($command)) !== 'OK') {
      trigger_error("Can't invoke bash");
      return;
    }
    $command = "/usr/bin/env bash -c 'read -s -p \""
      . addslashes($prompt)
      . "\" mypassword && echo \$mypassword'";
    $password = rtrim(shell_exec($command));
    echo "\n";
    return $password;
  }
}
票数 42
EN

Stack Overflow用户

发布于 2008-10-09 17:40:43

根据您的环境(例如,不是在Windows上),您可以使用ncurses库(具体地说,是用于停止键盘回显的ncurses_noecho()函数和用于读取输入的ncurses_getch()函数)来获取密码,而不在屏幕上显示它。

票数 11
EN

Stack Overflow用户

发布于 2012-08-26 06:21:48

您可以使用我的hiddeninput.exe文件来获得真正的隐藏输入,而不会将信息泄漏到屏幕上的任何地方。

代码语言:javascript
复制
<?php

echo 'Enter password: ';
$password = exec('hiddeninput.exe');
echo PHP_EOL;

echo 'Password was: ' . $password . PHP_EOL;

如果您删除了最后一个回显,密码应该永远不会出现,但您可以将其用于验证。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/187736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档