web-dev-qa-db-fra.com

comment générer OTP et envoyer le mot de passe au mobile par SMS

Je fais un projet d'utilisation d'OTP pour la connexion des sites Web. J'ai créé un bouton nommé "Générer". Une fois cliqué dessus, il crée un OTP et envoie une SMS via une passerelle HTTP, puis il stocke le mot de passe dans le base de données.

Mon code pour créer un OTP et l'enregistrer dans la base de données:

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);
}

Maintenant, je dois placer ce code d'API SMS:

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

La chose est que la 5ème ligne de code génère l’OTP, puis je dois placer mon API SMS après celle-ci afin qu’elle puisse envoyer le mot de passe au mobile, elle devrait alors chiffrer le mot de passe qui se trouve sur la 6ème ligne et puis enregistre dans la base de données.

Je ne sais pas comment effectuer cette action en séquence et je ne sais pas où placer le code 

3
Ajai Sandy

Essaye ça.

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);
}
5
Nishant Solanki

Le code suivant fonctionne comme un charme,

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

Merci, je suis heureux de vous référer ce tutoriel génial 

//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.

Découvrez ce didacticiel génial et l'implémentation de G2FA pour OTP sécurisé cryptographiquement - créer un système otp en utilisant php

1
RASAtech India

Voici un exemple de code rapide pour envoyer OTP via PHP avec http://2Factor.in OTP API

 <?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);

Vous pouvez vous référer à THIS LINK illustrant les étapes rapides à suivre pour implémenter SMS OTP depuis PHP

0
Rahul