2009-06-02 4 views
2

Я пытаюсь контролировать материал с помощью PHP с клавиатуры. Путь, я в настоящее время обнаружения нажатий клавиш с:Ввод клавиатуры в PHP

function read() { 
    $fp1=fopen("/dev/stdin", "r"); 
    $input=fgets($fp1, 255); 
    fclose($fp1); 

    return $input; 
} 
print("What is your first name? "); 
    $first_name = read(); 

Проблема заключается в том, что он не читает «вживую» нажатий клавиш. Я не знаю, возможно ли это с помощью этого метода, и я бы предположил, что это не самый эффективный способ сделать это. Мой вопрос: 1) если это хороший способ сделать это, то как я могу заставить его работать, чтобы при вводе на странице он фиксировал нажатия клавиш и 2) если это плохой способ сделать это , как я могу реализовать его лучше (возможно, используя ajax или что-то еще)?

Редактировать: Я использую PHP в качестве веб-страницы, а не командной строки.

+0

Вы используете PHP в качестве языка веб-скриптинга или только из командной строки? Я смущен ... –

+0

Вы делаете это локально? Вы ожидаете, что это будет работать на веб-странице или только через CLI? – Kekoa

+6

Для дальнейшего использования, если вы когда-нибудь захотите написать сценарий CLI: fopen ("/ dev/stdin", "r") очень зависит от платформы, а PHP уже предоставляет постоянный STDIN для использования в fread/fgets. Например, fgets (STDIN) – grawity

ответ

5

Я предполагаю, что вы используете PHP как язык веб-сценариев (не из командной строки) ...

Из того, что я видел, вы будете использовать Javascript на клиентская сторона для чтения ключевых входов. Как только сервер доставляет страницу клиенту, взаимодействие с PHP отсутствует. Таким образом, использование AJAX для чтения входных ключей клиента и совершения обращений к серверу - это путь.

Есть дополнительная информация о Javascript и обнаружении нажатия клавиш here и некоторая информация о том, как использовать AJAX here.

Аккуратный вариант для JQuery использовать что-то вроде delayedObserver

+0

Он не использует веб-интерфейс, он использует интерфейс командной строки PHP. Нет JavaScript (или даже HTML). – ceejayoz

+0

Он говорит о «странице» и AJAX, поэтому я предполагаю, что он имеет дело с веб-страницей. –

+0

Вы случайно не знаете, где я могу получить образец javascript для этого? Я все еще изучаю веб-скрипты. – blueintegral

-3
+0

Readline вернет только целую новую строку, в то время как OP заинтересована в одиночных нажатиях клавиш. – rodion

+1

Кроме того, библиотека readline недоступна во многих установках по умолчанию PHP. – chiborg

4

Если вы пишете приложение CLI (в отличие от веб-приложений), вы можете использовать ncurses' getch() функция для получения одного нажатия клавиши. Удачи!

Если вы не пишете приложение CLI, я бы предложил следующий ответ Эндрю.

Смежные вопросы