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

  • Hak5DarrensVlog

    Hak5DarrensV

    11 EYLÜL 2009
  • MuscleProdigyTV

    MuscleProdig

    8 Ocak 2011
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012