0

这可能看起来很愚蠢。如果无法实现,请告诉我。
所以:我有一个 Rasperry Pi (RPi),它为一个简单的家庭网络文件共享服务器运行 Raspbian 和 nginx。我这样做主要是为了学习,并直接潜入其中。无论如何,我的登录系统如下:

登录.html:

<html>
...
<form action="cgi-bin/loginHandler.php">
    <label for="username">Username:</label>
    <input name="username">
    <br/>
    <label for="username">Password:</label>
    <input name="password">
    <input name="button" type="submit" value="Submit">
</form>
...
</html>

cgi-bin/loginHandler.php:

<?php
exec("./login.rb $arg1 $arg2")
?>

cgi-bin/login.rb:

#!/usr/bin/ruby1.9.1
#update-alternatives changed "ruby" to "ruby1.9.1"

cmdArray = Array.new

ARGV.each do |a|
    cmdArray.push a
end

#backwards because I used push
if cmdArray[1] == "/u/afdsadf" and cmdArray[0] == "/r/unixporn"
    htmlFile = File.new("loggedIn.html", "w+")
    htmlFile.puts("<html><head></head><body>You are now logged in!</body></html>")
else
    htmlFile = File.new("notLoggedIn.html", "w+")
    htmlFile.puts("<html><head></head><body>You are now logged in!</body></html>")
end

我检查了我的 cgi-bin 目录,其中肯定没有“loggedIn.html”或“notLoggedIn.html”,所以 Ruby 要么抛出错误,要么根本没有运行。再说一次,首先使用 PHP 可能是个坏主意。我也可能需要method表单本身,但我不知道该使用什么。

4

1 回答 1

0

尝试使用绝对路径:

exec("/path/to/login.rb $arg1 $arg2")

或显式调用 ruby​​:

exec("/usr/bin/ruby /path/to/login.rb $arg1 $arg2")

您尝试打开的文件也是如此:

htmlFile = File.new("/path/to/loggedIn.html", "w+")
htmlFile = File.new("/path/to/notLoggedIn.html", "w+")
于 2013-09-15T22:36:27.840 回答