如何生成OTP并通过短信将密码发送到移动设备

时间:2014-03-12 13:04:22

标签: php sql api login one-time-password

我正在做一个使用OTP登录网站的项目,我创建了一个名为" Generate"点击后,它将创建OTP并通过HTTP网关发送短信,然后将密码存储在数据库中。

我创建OTP并保存在DB中的代码:

if(isset($_POST['generate']))
{
    $string = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string_shuffled = str_shuffle($string);
    $password = substr($string_shuffled, 1, 7);

    $password = base64_encode($password);
    $query = mysql_query("UPDATE user_login SET password='".$password."' WHERE username = 'ajai sandy' ");
    $qry_run = mysql_query($query);
}

现在我需要放置此SMS API代码:

http://login.smsgatewayhub.com/smsapi/pushsms.aspx?user=abc&pwd=xyz&to=919898123 456&sid=senderid&msg=test%20message&fl=0 

事情是第5行代码生成OTP,然后我需要在此之后放置我的SMS API以便它可以将密码发送到移动设备,然后它应该加密第6行的密码然后保存在数据库中。

我不确定如何按顺序执行此操作,并且不知道将代码放在何处

5 个答案:

答案 0 :(得分:5)

试试这个。

if(isset($_POST['generate']))
{
    $string = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string_shuffled = str_shuffle($string);
    $password = substr($string_shuffled, 1, 7);

    file_get_contents("http://login.smsgatewayhub.com/smsapi/pushsms.aspx?user=abc&pwd=$password&to=919898123456&sid=senderid&msg=test%20message&fl=0");


    $password = base64_encode($password);
    $query = mysql_query("UPDATE user_login SET password='".$password."' WHERE username = 'ajai sandy' ");
    $qry_run = mysql_query($query);
}

答案 1 :(得分:1)

以下代码的工作方式类似于魅力

 header('Location:http://login.smsgatewayhub.com/smsapi/pushsms.aspx?user=abc&pwd=$password&to=919898123456&sid=senderid&msg=test%20message&fl=0');

答案 2 :(得分:1)

谢谢,我很高兴为您推荐这个精彩的教程

//OTP SYSTEM CODE

function sendSMS($mobile=null, $subject=null)
{
$SMSapiKey = 'XYZ';
$url = 'http://example.com/api_2.0/SendSMS.php?APIKEY='.$SMSapiKey.'&MobileNo='.urlencode($mobile).'&SenderID=SAMPLE_MSG&Message='.urlencode($subject).'&ServiceName=TEMPLATE_BASED';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$returndata = curl_exec($ch);
curl_close($ch);
return "A SMS SENT SUCCESSFULLY TO $mobile";
}
$otp_code = strtoupper(substr(md5(uniqid()), 0, 6));   // A smart code to generate OTP PIN.

查看这个非常棒的教程和G2FA的实现,用于加密图形安全的OTP make otp system using php

答案 3 :(得分:0)

以下是使用http://2Factor.in OTP API

通过PHP发送OTP的快速示例代码
 <?php

$YourAPIKey='<YourAPI>';
$SentTo='<User10DigitNumber>';


### DO NOT Change anything below this line
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$url = "https://2factor.in/API/V1/$YourAPIKey/SMS/$SentTo/AUTOGEN"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
echo curl_exec($ch); 
curl_close($ch);

您可以参考THIS LINK,说明从PHP实施SMS OTP的快速步骤

答案 4 :(得分:0)

Verifying a phone number using OTP(一次性密码)是减少您网站上垃圾邮件的可靠方法。在本文中,我们将详细讨论该主题。我们将学习如何设置PHP代码以将OTP发送到手机号码,从而验证用户身份。我们将使用Twilio作为第三方服务来发送包含一次性密码(OTP)的消息。

实际上,Twilio是第三方工具,可用于发送文本消息,IVR等。 Twilio有很多替代方案,但是由于它的无缝集成和我个人的选择,我们将在本文中使用Twilio。尽管Twilio是一种付费工具,但我们可以使用它的“免费版本”,该版本当然有一定的局限性,但对于我们的文章及其目的就足够了。