我正在开发Android应用程序,其中应用程序应在使用OTP验证用户手机号码后显示注册配置文件。我正在使用MySQL作为数据库并使用PHP访问数据库并使用JSON解析来自PHP的回复。我正在使用 REST 服务来开发此应用程序。你能帮我找到解决方案吗?我必须只发送注册电话号码的一次性密码提前致谢
从 PHP
获取注册的电话号码,仅通过 PHP 发送 OTP。用户将通过API点击验证手机号码,并检查OTP是否与用户的电话号码匹配,并将已验证号码的字段设置为是/否或0/1。然后在通过PHP发送响应时检查手机号码是否经过验证。在 PHP 端处理请求和响应是更好的方法,因为它需要较少的应用程序更改。
PHP代码生成OTP
public function generaterefCode() {
$alphabet = "0123456789";
$pass = array();
$alphaLength = strlen($alphabet) - 1;
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass);
}
此函数将生成 OTP。获取此OTP,将短信发送到注册的手机号码,并将其保存在数据库中的手机号码中。
从安卓APP获取请求,并发送用户ID,手机号码和OTP。然后从数据库获取用户 ID 的值,并检查手机号码和 OTP 是否匹配。在此更新后,数据库作为移动验证是/否或 0/1
if($this->isNumAlreadyExists(9XXXXXXXX1)){
$query = 'INSERT INTO OTP_table VALUES (9XXXXXXXX1, OTP, USERID)';
(new PDO())->query($query);
$code = rand(10, 99) . rand(10, 99) . rand(10, 99);
$status = $this->sendSMS(9XXXXXXXX1, $code);
}
function sendSMS($number, $code){
//user curl call of your sms service provider
}
function isNumAlreadyExists($number){
$query = 'SELECT UserID FROM table_user WHERE Mobile = 9XXXXXXXX1';
$tmp = (new PDO())->query($query);
$result = $tmp->fetch(PDO::FETCH_ASSOC);
if($result){
return true;
}
else {
return false;
}
}
您可以设置表的 OTP 字段 NULL(默认情况下)。生成 OTP 时,必须将空值替换为生成的 OTP 值。经过用户端的验证过程。编写查询以使字段再次为 NULL。