PHP wartet auf Eingaben von der Kommandozeile [duplicate]

Lesezeit: 2 Minuten

Ich möchte in der Lage sein, ein PHP-Programm auf Benutzereingaben warten zu lassen. Zum Beispiel:

  1. Skript fordert Autorisierungscode vom Server an (dieser Code wird per E-Mail gesendet)
  2. Das Skript wartet darauf, dass der Benutzer den Autorisierungscode eingibt
  3. Skript wird fortgesetzt

Wie soll ich Schritt 2 machen? (Ist es möglich?)

  • Wie wäre es, wenn Sie die Manpage zur Verwendung von PHP CLI lesen, besonders nützlich wäre dieser Kommentar -> php.net/manual/en/features.commandline.php#94924

    – Knusprig

    10. März 2013 um 12:50 Uhr

  • Danke @Crisp, das kannst du beantworten.

    Benutzer1544337

    10. März 2013 um 12:51 Uhr

  • Ich glaube nicht, dass dies ein Duplikat der verlinkten Antwort ist. Sie könnten den von Crisp bereitgestellten Code verwenden, der Dateihandles beinhaltet. Oder verwenden Sie einfach die Funktion readline(), die zur Benutzereingabe auffordert: php.net/manual/en/function.readline.php vorausgesetzt, Ihr PHP wurde mit Readline-Unterstützung kompiliert.

    – Gabe

    2. April 2014 um 9:49 Uhr


  • @Gabe Die Frage ist vielleicht nicht dieselbe, aber eine Antwort auf diese Frage wurde auf die andere Frage gegeben, was das Schließen fair macht.

    Benutzer1544337

    2. April 2014 um 9:51 Uhr

  • Sie können die eingebaute PHP-Funktion verwenden: “readline()”, Verwendung: $line = readline(“Command: “);

    – Mohammed Anini

    16. Dezember 2014 um 18:49 Uhr

Benutzer-Avatar
Knackig

Die PHP-Manpage für das CLI hat eine kommentiere hier Detaillierung einer Lösung (hier kopiert für alle anderen, die suchen)

<?php
echo "Are you sure you want to do this?  Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes'){
    echo "ABORTING!\n";
    exit;
}
fclose($handle);
echo "\n"; 
echo "Thank you, continuing...\n";
?>

  • Kann dies eine Schleife sein, die bei der Eingabe beendet wird?

    – Azurinko

    26. September 2017 um 14:06 Uhr

  • @azurinko ja gist.github.com/jordan314/f633a58c68a7d923139b891065365133

    – Jordan314

    28. November 2017 um 1:24 Uhr

  • könnte genauso gut tun $line = trim(fgets($handle)) da Sie in 99,9% der Fälle keinen Zeilenumbruch in der erfassten Eingabe haben möchten

    – Von einem Grue gefressen

    30. März 2018 um 18:35 Uhr

  • Sie können eine zusätzliche Prüfung verwenden if( php_sapi_name() === 'cli' ) { } um festzustellen, ob der aktuelle Aufruf von CLI stammt stackoverflow.com/questions/933367/…

    – Arnis Juraga

    21. Januar 2019 um 9:22 Uhr


  • @Hugo: Du sollte verwenden readline() dafür. Das ist unnötig kompliziert.

    – Rinogo

    22. November 2021 um 15:52 Uhr

1352440cookie-checkPHP wartet auf Eingaben von der Kommandozeile [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy