4ltr
January 20, 2010, 8:31pm
1
Hi,
I am having problems trying to get input from a html form and write the
form data to a text file called visitor_log.
Here’s the code I have been working on:
login.rb:
#!/usr/local/ruby/bin/ruby
require “cgi”
cgi = CGI.new(“html4Tr”)
cgi.out{
cgi.html{
cgi.head{ “\n”+cgi.title{“Formula 1 Shop - Register”} } +
cgi.body{ “\n”+
cgi.form(“post”, “file.rb”){"\n"+
cgi.h1 { “Formula 1 Shop” } + “\n”+
cgi.h2 { “Register” } + “\n”+
cgi.p { “Username:” } + “\n”+
cgi.text_field(“username”) +"\n"+
cgi.p { “Password:” } + “\n”+
cgi.password_field(“password”) +"\n"+
cgi.p { “Email address:” } + “\n”+
cgi.text_field(“email”) +"\n"+
cgi.p { “Age:” } + “\n”+
cgi.text_field(“age”) +"\n"+
cgi.p { “Gender:” } + “\n”+
cgi.radio_group(“gender”, “Male”, “Female”) +"\n"+
cgi.br +
cgi.br +
cgi.submit
}
}
}
}
file.rb:
#!/usr/local/ruby/bin/ruby
require ‘cgi’
cgi = CGI.new
time1 = Time.new
forename = cgi.text_field(“username”)
password = cgi.password_field(“password”)
email = cgi.text_field(“email”)
age = cgi.text_field(“age”)
gender = cgi.radio_group(“gender”)
open(’…/logs/visitor_log’, ‘a’) { |f|
f.puts forename
f.puts password
f.puts email
f.puts age
f.puts gender
f.puts time1.inspect
}
4ltr
January 21, 2010, 1:16pm
2
#!/usr/local/bin/ruby
require ‘cgi’
cgi = CGI.new
time1 = Time.new
forename = cgi.params[‘username’] = [“value”]
password = cgi.params[‘password’] = [“value”]
email = cgi.params[‘email’] = [“value”]
age = cgi.params[‘age’] = [“value”]
gender = cgi.params[‘gender’] = [“value”]
open(’…/logs/visitor_log’, ‘a’) { |f|
f.puts forename
f.puts password
f.puts email
f.puts age
f.puts gender
f.puts time1.inspect
}
I have changed the variables to cgi.params, and I have looked at the
ruby documentation but I still don’t see how I can get the program to
work.
4ltr
January 21, 2010, 2:03pm
3
在 2010-01-21四的 21:17 +0900,Will H.写é“:
#!/usr/local/bin/ruby
require ‘cgi’
cgi = CGI.new
Hi,
Though I never wrote a ruby CGI, but it’s not that hard to write one
with class CGI.
I wrote and put this script into cgi-bin directory:
#!/usr/bin/ruby
require ‘cgi’
cgi = CGI.new
user = cgi[‘username’]
pass = cgi[‘password’]
time = Time.now.strftime(“%D %T”)
cgi.out(“text/plain”) do
“Time: #{time}\n” +
“User: #{user}\n” +
“Pass: #{pass}”
end
And access it with such url like:
http://127.0.0.1/cgi-bin/test.cgi?username=test&password=testpass
It just works fine.
You also want to check if webserver has the priviledge to write to the
file you like to create. Check webserver’s error_log for any error.
Ruby’s CGI document:
http://ruby-doc.org/stdlib/libdoc/cgi/rdoc/
HTH.
4ltr
January 21, 2010, 2:09pm
4
Will H. wrote:
#!/usr/local/bin/ruby
require ‘cgi’
cgi = CGI.new
time1 = Time.new
forename = cgi.params[‘username’] = [“value”]
password = cgi.params[‘password’] = [“value”]
email = cgi.params[‘email’] = [“value”]
age = cgi.params[‘age’] = [“value”]
gender = cgi.params[‘gender’] = [“value”]
open(’…/logs/visitor_log’, ‘a’) { |f|
f.puts forename
f.puts password
f.puts email
f.puts age
f.puts gender
f.puts time1.inspect
}
I have changed the variables to cgi.params, and I have looked at the
ruby documentation but I still don’t see how I can get the program to
work.
If anyone has the same problem, I have got the program working
by removing = [“value”] from cgi.params
visitor_log output:
will
Password
[email protected]
22
Male
2010-01-21 12:55:47 +0000
4ltr
January 21, 2010, 2:36pm
5
Jeff P. wrote:
I wrote and put this script into cgi-bin directory:
#!/usr/bin/ruby
require ‘cgi’
cgi = CGI.new
user = cgi[‘username’]
pass = cgi[‘password’]
time = Time.now.strftime(“%D %T”)
cgi.out(“text/plain”) do
“Time: #{time}\n” +
“User: #{user}\n” +
“Pass: #{pass}”
end
And access it with such url like:
http://127.0.0.1/cgi-bin/test.cgi?username=test&password=testpass
Hi Jeff,
Thanks for the code, you posted just after I solved the problem myself.