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

  • boburnham

    boburnham

    11 Temmuz 2006
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • MrOctopi

    MrOctopi

    6 Aralık 2010