プロが教える店舗&オフィスのセキュリティ対策術

登録フォームについての質問です。
ログイン用フォームのhome.cgi と、それにリンクするユーザー登録用フォームのregistration.cgi があり、今回質問するのはユーザー登録用のregistration.cgiの方です。そしてユーザーIDとPasswordはdata.txtに書き込んでいます。書き込み自体は成功するのですが、それ以外のところで問題がでている状態です。条件分岐がうまくいきません。

下記のように書いた時におこる問題点等について教えていただきたいと思います。

(1)IDとPassword のinput に値が空の時に、ボタンを押しても、登録完了しました と表示されてしまうので、この様な場合は、"もういちど確認してください" などの警告文を出したいです。

(2)IDとPassword の文字数に制限を入れたいのですが、分かりませんでした。
双方とも4文字以上8文字以下にしたいです。それ以外の場合は、条件分岐で、"文字数を確認してください"などの警告文を出したいです。

-------- < ここから registration.cgi >--------------------
#!/usr/bin/ruby
require "cgi"
cgi = CGI.new
puts <<HTML
Content-Type: text/html

<html>
<head>
<title>練習問題</title>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
</head>
<body>
<h1>練習(1)</h1>


登録フォーム
<form action="registration.cgi" method="post">
ユーザーID:<input type="text" name="login" ><br>
パスワード:<input type="text" name="password"><br>
<input type="submit" value="submit">
</form>
HTML

if cgi.params["login"][0] then
f = open("data.txt","a")
f.puts"%s:%s" %[cgi.params["login"][0],cgi.params["password"][0]]
f.close

puts "登録完了しました"
else
end



puts <<HTML
<br>
<a href="./home.cgi">戻る</a>
HTML

-------- < ここまで >--------------------

A 回答 (3件)

>if cgi.params["login"][0]=~/[0-9a-z]{1-8}/ then



この通りに書いてるとしたら、動かないです。{1-8} じゃなくて {1,8} です。エラーにならないのが意外。

あとRubyでは、文字列 =~ 正規表現 では無く、正規表現 =~ 文字列 と書きます。
前者でも動くのですが。
    • good
    • 0
この回答へのお礼

大変ありがとうござまいす。感謝します。勉強になりました。

お礼日時:2013/06/19 12:57

>知識がまだまだ無い状態で、いろいろな書籍などのサンプルコードをくっつけたりして、作りました。



では、まず知識を付けましょう。

「Rubyを覚えるつもりは無くてとにかく動けば良い」ではなくて「Rubyを学習したい」とお見受けしていますので、まずは入門書を通読しましょう。
定番の入門書はこれ。 http://www.amazon.co.jp/dp/4797357401

この回答への補足

この本もっていますけど、基本はのってますけど、応用して、組み合わせるまでは、この本だけでは無理でした。 とくに正規表現でマッチングパターンがいくつかのってますけど、僕が作ったコードと、どう繋げるかというところが分かりません。
とくに、
if cgi.params["login"][0] then この部分ですが、


if cgi.params["login"][0]=~/[0-9a-z]{1-8}/ then

このうよに8文字までに限定しても動きません。書き方がおかしいので…

もし分かりましたら教えてください。

補足日時:2013/06/17 00:24
    • good
    • 0
この回答へのお礼

大変ありがとうござまいす。感謝します。勉強になりました。

お礼日時:2013/06/19 12:57

何がわからないかわからないのですが、Ruby言語の知識はあるのでしょうか?


あるいは無い?

この回答への補足

返信ありがとうございます。
知識がまだまだ無い状態で、いろいろな書籍などのサンプルコードをくっつけたりして、作りました。
だから、ただしいコードを書いているのかどうか、自分でもわからなくて、条件分岐等の細かいところを試行錯誤したのですが、うまくいかなかったので、ここに投稿するに至りました。宜しくお願いします。

補足日時:2013/06/16 23:28
    • good
    • 0
この回答へのお礼

大変ありがとうござまいす。感謝します。勉強になりました。

お礼日時:2013/06/19 12:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!