Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: konsola - wprowadzanie hasła
Forum PHP.pl > Forum > PHP
flashdev
Kod
#!/usr/bin/php
<?

echo "podaj hasło: ";
$conf = array(
  'email' => 'xxx@gmail.com',
  'pass' => trim(fgets(STDIN))
);


Wie ktoś jak to zrobić, aby przy wprowadzaniu hasła nie było ono widoczne (***)?
Crozin
W PHP nie masz (chyba) możliwości absolutnie żadnej ingerencji w konsolę poza wczytywaniem (STDIN, STDERR) i wypisywaniem (STDOUT) danych ze strumieni. Wydaje mi się, że nie będziesz wstanie tego osiągnąć, bo zazwyczaj robi się to poprzez zmianę trybu działania konsoli - przykład - a w PHP się do niej nie dobierzesz.
redeemer
Widzę, że korzystasz z unixa/linuxa, więc śmiało możesz użyć stty

Przykład z http://marc.info/?l=php-internals&m=117442143122154
  1. function get_password($prompt)
  2. {
  3. $ostty = `stty -g`;
  4. "stty -echo -icanon min 1 time 0 2>/dev/null || " .
  5. "stty -echo cbreak"
  6. );
  7.  
  8. echo "$prompt: ";
  9.  
  10. // Get rid of newline when reading stdin
  11. $r = substr(fgets(STDIN), 0, -1);
  12.  
  13. echo "\n";
  14. system ("stty $ostty");
  15.  
  16. return $r;
  17. }
Tutaj z kolei jest kod, który powinien zadziałać również na windowsie, gdzie jest tworzony sztucznie skrypt visual basic i podczas wywołania hasło wprowadzamy w oddzielnym oknie/popupie.
flashdev
Dzięki, o to właśnie chodziło. Ja się aż tak dobrze nie orientuję w unixie (macos), więc nie znałem tych komend smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.