端末エミュレーターは Web ページに埋め込む必要があり、ユーザーは Web ページ アクセスによってサーバー上に作成された Java プログラムをコンパイルして実行する必要があります。ターミナルでプログラムをコンパイルして実行したい。クライアントは、アプリケーション ソフトウェアをインストールする必要はありません。
2 に答える
次のことをお勧めします。
- テキスト編集可能な div を作成し (contentEditable 属性を true に設定)、コンソールのようにスタイルを設定します。
- 次に、その keypress イベントにバインドして入力を監視します。入力すると、入力した内容を実行するサーバーサイド スクリプトを ajax 要求します。たとえば、php の exec() を使用して、その戻り値を出力します。
- サーバー側スクリプトの応答を div に追加し、繰り返します。
ただし、ユーザーに対してコンソールを開くときは十分に注意する必要があります。関数をすべての端末コマンドの先頭に明示的に追加することで、端末の機能をさらに制限できます。たとえば<?php echo exec('git '.$_GET['cmdtxt']); ?>
、git が確実に呼び出されるようにする方法の 1 つですが、2 番目のコマンドを実行する可能性があるため、依然として脆弱です。セキュリティのニーズが何であるかを把握し、適切に検証できると確信しています。
これがあいまいに思える場合、それはあなたの質問があまり具体的ではないからです。これはあなたが探していた答えですか?お知らせ下さい :)
まず、結果を表示するための div とコマンド用のテキストエリアを作成できます。テキストエリアのキープレスを確認し、ユーザーが Enter キーを押したときに AJAX を使用してコマンドをサーバーに送信します。より端末に似たスタイルにすることができます。
コンソールをユーザーに公開すると、簡単にハッキングされる可能性があることに注意してください。危険なコマンドが実行されないように、常にユーザー入力を確認してください。
コマンドをフィルタリングする方法のサンプル コード:
<?php
$cmd = $_POST['cmd'];
$allowed = array('ls','git','grep','...');//The allowed commands
foreach($allowed as $part){
if(strpos($cmd,$part) === false){
echo 'Command not recognized!';
}
}
ob_start();
passthru($cmd);
$result = ob_end_clean();
echo json_encode(array('result'=>$result));
これがあなたを助けることを願っています。