我在Sinatra网站上实施了注册的sms验证,我得到了这样的代码:
post '/reg' do
phone = params[:phone].to_s
code = Random.rand(1000..9999).to_s
HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id + phone + '&text=' + code)
end
这会从发布请求中获取用户电话,而不是生成4位数代码,并通过获取请求将号码发送到短信服务。但是,页面没有重新加载,因为此时打开模态对话框,用户应键入代码。打开模态的按钮同时使用以下代码通过Ajax发送发布:
$(document).ready(function(){
$("#sendsms").click(function(){
var phone = $("#phone").val();
$.ajax({
url: "/coop",
data: {"phone": phone},
type: "post"
});
});
});
在客户端检查用户代码会很奇怪,这就是为什么我有这个行动路线:
post '/coop/checkcode' do
usrcode = params[:code]
if code == usrcode
redirect '/reg/success'
else
redirect '/reg/fail'
end
end
但我无法从 checkcode 路线中的第一条路线输入代码 var。但我需要。
是否存在传递该变量或以其他方式实现此方法的任何可能方法?
提前谢谢。
答案 0 :(得分:0)
您应该考虑使用会话:here
首先在config中:
enable :sessions
现在你得到了:
post '/reg' do
phone = params[:phone].to_s
session[:code] = Random.rand(1000..9999).to_s
HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id + phone + '&text=' + session[:code])
end
和
post '/coop/checkcode' do
usrcode = params[:code]
if session[:code] == usrcode
redirect '/reg/success'
else
redirect '/reg/fail'
end
end