如何在php / javascript / jquery中实现“一次性密码”?

时间:2014-07-22 13:01:03

标签: javascript jquery html html5

我需要在网站的注册页面中实施一次性密码。用户输入他的手机号码并按“生成OTP”键。按钮。页面 不会 更改。他通过短信收到OTP。他在主页上输入了OTP并预先提交了“提交”。按钮。现在OTP是匹配的,如果发现好,则在数据库表中输入注册请求。

如何保持页面保持不变,我很无能为力。同时按下“生成OTP”#39;按钮。我已经实现了相同的功能,但是分为两页。在这里我只需要在一个页面中实现它。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

选项1:如果您使用iFrame,则可以不使用javascript。

在请求手机号码的表单中,只需添加"target='name_of_your_iFrame'"属性即可。该表单的操作应该是生成OTP并将OTP发送给用户的脚本。

在同一页面上的此表格下方,用户可以使用普通表格输入他的OTP并进行注册。

为iFrame设置样式,使其成为HTML页面上的隐藏元素,或者您可以使用它来向用户提供他的OTP发送与否的反馈。

选项2:否则,使用jQuery AJAX是另一种选择,可能是这样的:

var otp_url = 'otp.php';
$('form[name=form_mobile_nr]').submit(function (event) {
    event.preventDefault();
    var mobile_nr = $('input:text[name=mobile_nr]').val();
    $.post(otp_url, {mobile_nr:mobile_nr}, function(response) {
        if (response) alert(response);
    });
});

在您的php脚本('otp.php')中,您可以获取并使用移动设备:

$mobile_nr = !empty($_POST["mobile_nr"]) ? $_POST["mobile_nr"] : NULL;
if ($mobile_nr) {
    // test if valid number
    // generate OTP
    // create database entry for mobile_nr and OTP
    // send OTP to user
}
else echo "Please supply a valid mobile number.";