2009-10-23 3 views
1

Je veux lire dans un mot de passe dans le cadre d'un script de ligne de commande, mais ne sais pas ce que le mot de passe tapé à apparaître sur l'écran. Cela semble être une fonctionnalité assez courante dans les applications de ligne de commande, mais mon Google-fu n'a pas réussi à identifier comment cela fonctionne. Est-ce une caractéristique de l'OS? Devez-vous intercepter le flux d'entrée pour qu'il n'écrive pas sur la console? Je voudrais l'utiliser dans un script de ligne de commande PHP, mais je ne peux pas utiliser ce que je ne peux pas comprendre.Ligne de commande PHP: Comment lire un mot de passe tapé sans afficher les caractères tapés sur la console?

Certaines recherches indépendantes ont généré un lien this, où, en bas, elles mentionnent que mysqladmin n'utilise pas STDIN pour lire le mot de passe. Comment le font-ils alors, et comment pourrais-je implémenter cette fonctionnalité?

+0

Pour répondre à la question sur mysqladmin ', vous pouvez toujours ouvrir votre propre TTY qui permettra l'entrée. –

Répondre

0

Répondre au cas où quelqu'un trouverait ce googling.

Ce n'est pas possible en PHP pur. La solution consiste à exécuter un petit script shell pour Linux ou un petit programme pour Windows.

Le script shell ressemblerait à ceci pour le shell zsh:

/usr/bin/env zsh -c 'stty -echo; read -r mypassword; stty echo; echo $mypassword' 

Une mise en œuvre complète de travail a été écrit par Seldaek du compositeur, que vous pouvez trouver à https://github.com/Seldaek/cli-prompt

Questions connexes