Bu pencereler parolayı gizler bir php cli parola istemi yazmak gerçekten mümkün değil mi?

4 Cevap php

Ben kullanıcı tarafından girilen parolayı gizler php bir çapraz platform parola istemi yazılı bir çare bulmak için çalışırken birkaç saat geçirdim. Bu kolayca Stty-eko aracılığıyla Unix ortamlarında gerçekleştirilir iken, ben (passthru çeşitli yollarla denedim) ve sistem () pencereler boşuna aynı şeyi yapmak için çağırır.

Ben denedim:

passthru('set /p pass=Password: ');
system('echo %pass% > out.txt');
$pass = file_get_contents('out.txt', 'r');

Bu passthru ('set / p pass = Şifre:') askıda gibi görünüyor; giriş için herhangi bir metni bana izin olmadan ve çizgi Ctrl-c ile öldürülmüş olmalıdır.

Ben de İşlev fgetc ve fgets çeşitli yöntemler denedim ve bu diğer dillerde çalışır beri girişini gizlemek için geri silme karakterleri yazdırırken var. Ancak, PHP önce bir satır metin ile etkileşim mümkün görünmüyor.

Ben gerçekten bu işi yapmak için bir yol bulmak istiyoruz, bu imkansız bir görev olduğunu da bu yapılabilir bir şey mi?

Ben bir toplu iş dosyasında php komut dosyası sarın ve bir komut satırı argümanı olarak şifreyi geçebileceği farkındayım, ama bu durumda benim için çalışmıyor unutmayın.

4 Cevap

İşte Windows çözüm PHP için COM uzantısı kullanarak bulunuyor. PHP 5.2.6 Windows XP üzerinde bu test.

<?php

$pwObj = new Com('ScriptPW.Password');

print "Password: ";
$passwd = $pwObj->getPassword();

echo "Your password is $passwd\n";

?>

PHP için bir IOCTL veya Stty uzantısı yok gibi görünüyor. Ben aşağıdaki hile bulundu here:

<?php
echo 'Password: ';
$pwd = preg_replace('/\r?\n$/', '', `stty -echo; head -n1 ; stty echo`);
echo "\n";
echo "Your password was: {$pwd}.\n";
?>

Kabul cevabı artık Windows 7 ve üzerinde çalışır. Bu blog Ben bu soruna olası bir çözüm tartışıldı. Bu, Windows 95, Windows 8 için çalışır C yazılmış harici bir program kullanır.

Ben size standart kütüphanede PHP ile bunu yapamazsınız düşünüyorum ama daha iyisini yapabilirsiniz:

Ilk harfini yakalamak, sonra bir * görüntüler. İkinci birini yakalamak, sonra da * iki gösterilecek ...

Kullanıcı o girdiniz görebilirsiniz çünkü ergonomik, bu kullanışlı. Biri bir harf tarafından parola bir harfini görebilirsiniz eğer, o adam zaten klavyede yazarak görebilirsiniz, çünkü güvenlik risk altında değildir. Ama yine de bir kez kazara onu görmeye gelen birini engellemek.