He pasado varias horas tratando de encontrar un medio para escribir un mensaje de contraseña de plataforma cruzada en php que oculta la contraseña que ingresa el usuario. Si bien esto se logra fácilmente en entornos Unix mediante el uso de stty -echo, he intentado varios medios de llamadas passthru() y system() para hacer que Windows haga lo mismo sin éxito.¿Realmente no es posible escribir un mensaje de contraseña de php cli que oculte la contraseña en Windows?
que he intentado:
passthru('set /p pass=Password: ');
system('echo %pass% > out.txt');
$pass = file_get_contents('out.txt', 'r');
Esto parece colgar en el tránsito ('pase set/p = Contraseña:'); línea sin permitirme ingresar ningún texto y debe ser eliminada con Ctrl-c.
También he probado varios métodos de fgetc y fgets e impresión de caracteres de retroceso para ocultar la entrada, ya que funciona en otros idiomas. Sin embargo, PHP no parece poder interactuar con el texto antes de un retorno de carro.
Realmente me gustaría encontrar la manera de hacer que esto funcione, ¿es esto una tarea imposible o es algo que se puede hacer?
Tenga en cuenta que soy consciente de que podría ajustar la secuencia de comandos php en un archivo por lotes y pasar la contraseña como un argumento de línea de comandos, pero eso no funciona en este caso.
Creo que está buscando compatibilidad con Windows, que no tiene stty. –
¿Cuál es el contexto? La respuesta obvia sería usar un cuadro de texto con contraseña de eco, pero al parecer estás ... ¿qué? ¿Cómo solicitar una consola en el host? – dkretz
@doof: Sí, el OP dijo que está ejecutando un script CLI. Él no dijo específicamente Windows, pero sí dijo "archivo por lotes", que es el lenguaje de Windows. –