SORU
9 EKİM 2008, PERŞEMBE


Komut Satırı ile Parola İstemi PHP

Bir komut satırı aracı benim web app yardım etmek için yazıyorum. Servise bağlanmak için bir şifre gerekiyor. Komut dosyası bir parola komut satırı bağımsız değişken olarak geçmek zorunda kalmayayım istemi göstermek istiyorum.

Bu çok kolay, ama bunu yazılı olarak ekrana şifre echo için değil istiyorum. Nasıl PHP ile bunu yapabilir miyim?

Bonus saf PHP (system('stty')) ve * ile karakterleri değiştirmek için puan.

DÜZENLEME:

Komut unıx gibi bir sistemde (linux veya mac) çalışır. Script PHP ile yazılmıştır ve muhtemelen öyle kalacak.

Ayrıca, kayıt için, stty yol:

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";

Orada system() aramaları için değil tercih ederim.

CEVAP
4 Kasım 2009, ÇARŞAMBA


sitepoint üzerinde bulundu.

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;
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • PlayStation

    PlayStation

    16 Aralık 2005
  • UniqueApps

    UniqueApps

    4 Ocak 2009
  • William Hyde

    William Hyde

    23 HAZİRAN 2008