online interactiva ejecutar desde consola comando cli php passwords

interactiva - php console online



¿Realmente no es posible escribir una solicitud de contraseña de php cli que oculte la contraseña en Windows? (3)

Aquí hay una solución de Windows, usando la extensión COM para PHP. Probé esto en Windows XP con PHP 5.2.6.

<?php $pwObj = new Com(''ScriptPW.Password''); print "Password: "; $passwd = $pwObj->getPassword(); echo "Your password is $passwd/n"; ?>

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.

Yo he tratado:

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

Esto parece colgar en el passthru (''set / p pass = Password:''); 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 forma 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 envolver la secuencia de comandos php en un archivo por lotes y pasar la contraseña como un argumento de línea de comando, pero eso no funciona para mí en este caso.


Creo que no puedes hacer eso en PHP con la biblioteca estándar pero puedes hacerlo mejor:

Captura la primera letra, luego muestra un *. Captura el segundo, luego muestra dos * ...

Ergonómicamente, esto es útil porque el usuario puede ver lo que ha ingresado. La seguridad no está en riesgo porque si alguien puede ver la contraseña una letra por una letra, puede ver al tipo escribiéndola en el teclado de todos modos. Pero aún impide que alguien lo vea por accidente al mismo tiempo.


No parece haber una extensión IOCTL o STTY para PHP. Encontré el siguiente truco aquí :

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