ここでは、PHP、HTML、CSS & jQueryでRubyファイルを実行できるように思われる基本的なコマンドラインの画像を示します。少しだけそうだと思うけど、何でもそんなに持っているよ!以下
Basic Command Line
2つの部分から構成され、基本的な端末アプリケーションである:
1)cmd.php - システムを処理するための単純なPHPファイルが
2コマンド)のindex.php - Aそれと対話するユーザーインターフェイス。
これはきわめて基本的なコマンドラインインターフェイスですが、開始するには良い場所です!
<?php
// Be sure to set your password from 1234567 to something more secure!!!
define("MY_PASSWORD", "1234567"); // <--- Important cange to your password
// Check if there is a command and password submitted before executing
if (isset($_POST['cmd']) == true && $_POST['key'] == MY_PASSWORD) {
system($_POST['cmd'],$output); // execute request
// Return error if output is not equal to 0
if ($output == 127) { err("invalid command..."); }
else if ($output == 1) { err("operation no permitted..."); }
else if ($output == 2) { err("no such file/directory..."); }
else if ($output == 3) { err("no such process..."); }
else if ($output == 4) { err("interrupted system call!"); }
else if ($output == 5) { err("i/o error..."); }
else if ($output != 0) { err("error ($output)..."); }
} else {
echo(-1); // Login Failed!
}
function err($msg) {
echo("<span class='errs'>$msg</span>"); // error message
}
?>
そしてここで、ユーザインターフェースで、同じディレクトリにそれらの両方を保存し、他の何かに上記のファイルに1234567からパスワードを更新するようにしてください...
<html>
<head>
<title>iCMD</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js></script>
<style>
body, html { background-color:#000000; color:#1AD6FD; outline:0; padding:0; outline:0; margin:0; border:0; }
input { display:inline-block; background-color:transparent; font-family:monospace; font-size:14px; padding:10px; outline:none; border:none; min-height:60px; height:10%; width:100%; color:#FFF; }
#cmd-frame { background-color:#000000; position:fixed; bottom:0px; right:0px; left:0px; }
#frame { background-color:#111111; margin-top:-50px; }
#sys { overflow:auto; padding:10px; height:90%; }
.cmdo { color:#FFFFFF; margin-left:10px; margin-top:5px; margin-bottom:5px; }
.code { color:#FFFFFF; }
.cmdi { color:#1AD6FD; }
.cmdc { color:#39FF14; }
.errs { color:#FF2A68; }
</style>
</head>
<body>
<div id="frame">
<pre><code>
<div id="sys"></div>
<code><pre>
</div>
<div id="cmd-frame">
<table width='100%' padding="0px"><tr>
<td width='150px'><span style='padding-left:8px;'> [command-line: ~ $</span></td><td><input type="txt" id="cmd" name="cmd" placeholder=""></td>
</tr></table>
</div>
<script>
inp("Welcome to the command line terminal! (V. 1.0)");
inp("Please enter your password to continue...");
mem = ["Hello, world"];
key = "";
idx = 0;
shiftlock = false;
$(document).on('keyup', function(e) { shiftlock = e.shiftKey });
$(document).on('keydown', function(e) {
shiftlock = e.shiftKey
scrolling = false;
if (e.which == 38) {
scrolling = true;
idx -= 1;
} else if (e.which == 40) {
scrolling = true;
idx += 1;
}
if (idx < 0) {
idx = 0;
}
if (idx > mem.length) {
idx = mem.length;
}
if (scrolling == true) {
mem.push($('#cmd').val());
$('#cmd').val(mem[idx]);
}
});
$('#cmd').keypress(function(e) {
if (e.which == 13 && shiftlock == false) {
command = $("#cmd").val();
mem.push(command);
idx = mem.length;
if (key) {
inp(command);
exe(command);
} else {
inp("******");
usr(command);
}
}
});
function usr(tmp) {
$.post("cmd.php",{
cmd: "echo success!",
key: tmp
},
function(data, status) {
if (parseInt(data) != -1) {
key = tmp;
out(data);
} else {
out("<span class='errs'>login failed...</span>");
}
});
}
function exe(cmd) {
cmd = cmd.replace("read ", "ruby read.rb ");
cmd = cmd.replace("save ", "ruby save.rb ");
// Important to change cmd.php to where your php component is (same directory)!
$.post("cmd.php",{
cmd: cmd,
key: key
},
function(data, status) {
out(data)
});
}
function inp(cmd) {
$('#cmd').val("");
$("#sys").append("<span class='cmdi'>[command-line: ~ $ <span class='code'>" + cmd + "</span></span>\n");
dwn();
}
function out(msg) {
if (msg) { $("#sys").append("<p class='cmdo'>"+msg+"</p>"); }
dwn();
}
function err(msg) {
$("#sys").append("<p class='errs'>"+msg+"</p>");
dwn();
}
function dwn() {
var e = document.getElementById("sys");
e.scrollTop = e.scrollHeight + 30;
}
</script>
</body>
</html>
基本的にそれが処理することができます一度に1つの要求しか受け付けず、自己の記憶を保持しないので、できることには限りがあります。しかし、それはむしろすばやく機能し、非常に強力ですので、rm -rfを入力しないでください)
テキストを解析すると簡単にphpを使用できます –
Ya私はそれが主に単なる例であることを知っています。主な理由は、私の学校が私にRubyの開発をさせていることです。実世界で実装したいと思っています。しかし、それだけの価値があるとは思われません... – Asleepace
WebアプリケーションからRubyコードを呼びたい場合、Ruby on Railsを使用できませんか? – Chris