2013-02-06 82 views
0

終端仿真器必須嵌入到一個網頁中,用戶必須通過網頁訪問來編譯和運行在服務器上創建的Java程序。我想在終端中編譯和運行程序。客戶端不需要安裝任何應用程序軟件。如何訪問客戶端網頁中的服務器端終端?

+0

這不是問題。請重新說明它,以便它要求具體的東西。 – adrusi

回答

2

我想提出以下建議:

  • 使一個文本編輯DIV(設置CONTENTEDITABLE屬性爲true)和風格它看起來像一個控制檯。
  • 然後綁定到它的keypress事件來監視一個輸入,在這個輸入上你ajax請求一個服務器端腳本來執行你輸入的任何內容。例如。使用php的exec()並輸出它的返回值。
  • 追加服務器端腳本到div響應,並重復..

雖然開放控制檯給用戶時,你應該非常小心。您可以通過明確地向所有終端命令預先添加功能來進一步限制終端的能力,例如, <?php echo exec('git '.$_GET['cmdtxt']); ?>是確保調用git的一種方法,但由於您可能潛在地執行第二個命令,因此它仍然很脆弱。我相信你可以弄清楚你的安全需求是什麼,並正確地驗證它們。

如果這看起來很模糊,那只是因爲你的問題不是太具體。這是你正在尋找的答案嗎?讓我知道:)

0

首先,您可以創建一個顯示結果的div和命令的textarea。檢查textarea的按鍵,並在用戶按下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)); 

希望這可以幫助你。