だから私はRuby/Sinatraでログイン/サインアップページを構築しています.誰かが使用中の電子メールでサインアップしようとすると、そのことを伝えて許可しないようにロジックを追加しようとしています.サインアップします
require 'rubygems'
require 'sinatra'
require 'mysql'
get "/" do
erb :form
end
post "/" do
begin
con = Mysql.new('localhost', 'tut', 'tut', 'recruited_users')
auth = con.query('SELECT school FROM users WHERE email = "#{params[:email]}" AND password = "#{params[:password]}"')
auth.fetch_row
ensure
con.close if con
end
end
get '/signup' do
erb :signup
end
post '/signup' do
begin
con = Mysql.new('localhost', 'tut', 'tut', 'recruited_users')
check_for_user = con.query("SELECT email FROM users WHERE email = '#{params[:email]}'")
if check_for_user == ''
"Sorry, but there is already an account for this user. The ID is '#{params[:check_for_user]}', please try again"
else
auth = con.query("INSERT INTO users (email, password, school) VALUES('#{params[:email]}', '#{params[:password]}', '#{params[:school]}')")
"Succesfully created user #{params[:email]}"
end
ensure
con.close if con
end
end
問題は、変数check_for_user
が値を受け取っていないことです。少なくとも、私が操作できる値ではありません。メールがデータベースにまだ存在しない場合にのみ新しいユーザーを作成できるように、if ステートメントを設定できるようにする必要があります。