无法保存到Ruby文件
您好我有一个简单的表单,允许用户输入名称,他们的性别和密码。我使用Digest :: MD5.hexdigest加密输入。一旦我有加密的输入,例如,d1c261ede46c1c66b7e873564291ebdc,我希望能够将其附加到我已创建的文件。然而,我尝试过的每一件事都无法正常工作。任何人都可以请帮助,并提前感谢你。以下是我有:无法保存到Ruby文件
input = STDIN.read(ENV["CONTENT_LENGHT"])
puts "Content-type: text/html \n\n"
require 'digest/md5'
digest = Digest::MD5.hexdigest(input)
f = File.open("register.txt", "a")
f.write(digest)
f.close
我也试图与没有运气:
File.open("register.txt", "a") do |f|
f.puts(digest)
end
如果代码是逐字那么我认为你必须在第一行输入错误:你的意思是CONTENT_LENGHT
还是它是一个错字?如果变量被设置,ENV []将返回一个字符串,这会使STDIN#read
沮丧。我得到TypeError: can't convert String into Integer
。假设输入错误,然后ENV[]
返回nil
,它告诉STDIN#read
读取,直到EOF,从控制台意味着,我认为,控制Z。这可能会导致问题。
我建议你这样修改脚本调查:
read_length = ENV["CONTENT_LENGTH"].to_i # assumed typo fixed, convert to integer
puts "read length = #{read_length}"
input = STDIN.read(read_length)
puts "input = #{input}"
puts "Content-type: text/html \n\n" # this seems to serve no purpose
require 'digest/md5'
digest = Digest::MD5.hexdigest(input)
puts "digest = #{digest}"
# prefer this version: it's more idiomatically "Rubyish"
File.open("register.txt", "a") do |f|
puts "file opened"
f.puts(digest)
end
file_content = File.read("register.txt")
puts "done, file content = #{file_content}"
此工程在我的机器上,与下面的输出(当CONTENT_LENGTH设置为12):
read length = 12
abcdefghijkl
input = abcdefghijkl
Content-type: text/html
digest = 9fc9d606912030dca86582ed62595cf7
file opened
done, file content = 6cfbc6ae37c91b4faf7310fbc2b7d5e8
e271dc47fa80ddc9e6590042ad9ed2b7
b0fb8772912c4ac0f13525409c2b224e
9fc9d606912030dca86582ed62595cf7
谢谢你的回复,这是一个很大的帮助,我忘了提及这是CGI,当我提交表单时,我得到一个没有内容类型的内部服务器错误: read length = 36 input = Username = abc&Gender = abc&Password = abc digest = 47ff5e5e40fbcced5c2e24702f236235 它没有打开文件并追加任何内容。 – Yokocapolo 2012-01-06 14:12:59
我已经设法让它写入一个文件,现在感谢大家的帮助,谢谢麦克伍德豪斯我确实有一个错字。 – Yokocapolo 2012-01-06 15:31:04
我不知道我明白;什么不工作?你的代码工作得很好,但我不知道你为什么写内容类型到标准输出。 (我也不明白你为什么使用环境变量来设置一个变量;你确定错字不是唯一的问题吗?) – 2012-01-06 13:13:06
感谢您的回复,我是Ruby的新手,据我所知,STDIN&STDOUT用于使用POST方法的形式,我是。说实话,我对红宝石有些困惑,我读过的所有东西都只是在我的头上。我之后的所有内容都是要加密的表单输入,然后在提交表单后将其附加到文件中。如果我走错了方向,请指向正确的方向。再次感谢。 – Yokocapolo 2012-01-06 13:35:54
什么不工作?按照预期将复制/粘贴代码附加到我的文件中(Ubuntu/Ruby 1.8.7) – 2012-01-06 13:39:40