OTP là cách xác thực người dùng hiệu quả. Loại xác thực này được áp dụng rộng rãi bởi các ứng dụng ngân hàng, phần mềm thương mại điện tử và nhiều ngành dọc khác. Trong hướng dẫn này, chúng ta sẽ xem cách triển khai xác minh số điện thoại di động OTP SMS bằng PHP
Có nhiều API khác nhau có sẵn trên thị trường để gửi SMS qua một ứng dụng. Trong mã này, tôi đã sử dụng API Textlocal để gửi SMS OTP. Textlocal là một trong những dịch vụ SMS phổ biến. Nó cung cấp dịch vụ SMS cho nhiều ngôn ngữ lập trình. Tải xuống lớp API PHP để tích hợp nó vào nền tảng ứng dụng của chúng tôi
Trong hướng dẫn trước, chúng ta đã biết cách xác minh email và đăng nhập bằng xác thực OTP bằng PHP. Để xác minh số điện thoại di động bằng cách gửi SMS OTP bằng cách sử dụng API Textlocal, chúng tôi cần tạo tài khoản Textlocal và đăng nhập bằng để lấy khóa API. Khóa API này được sử dụng sau này trong khi khởi tạo lớp API để gửi SMS
Trong ví dụ này, chúng tôi sử dụng hai biểu mẫu HTML. Một là để lấy số điện thoại di động và một là để lấy OTP. Bằng cách gửi các biểu mẫu này, yêu cầu AJAX sẽ được gửi để truy cập PHP để gửi mã OTP và xác thực nó bằng dữ liệu phiên PHP
Nhận Số điện thoại di động để gửi OTP
Đây là trang đích sẽ hiển thị biểu mẫu HTML để xác minh số điện thoại di động của người dùng. Khi gửi số điện thoại di động bằng cách nhấp vào nút gửi OTP, mã AJAX sẽ được thực thi để yêu cầu PHP gửi OTP qua SMS bằng API Textlocal
How to Implement OTP SMS Mobile Verification in PHP with TextLocal
Mobile Number Verification
Biểu mẫu HTML để gửi OTP để xác minh
Đây là một dạng HTML khác sẽ được AJAX tải sau khi gửi OTP đến số điện thoại di động của người dùng. Người dùng phải gửi OTP đã nhận qua biểu mẫu này. Mã OTP được tạo được lưu trữ trong một biến phiên PHP. Dữ liệu phiên này sẽ được sử dụng để xác minh OTP đã nhập có chính xác hay không
OTP is sent to Your Mobile Number
jQuery AJAX Script để yêu cầu mã xác minh và gửi OTP
Đây là file JavaScript chứa các hàm yêu cầu gửi OTP và xác thực mã PHP qua AJAX. Cả hai hàm này đều gửi tham số hành động thích hợp để thực thi khối mã PHP phù hợp. Phương thức sendOTP[] gửi số điện thoại di động và thông số hành động send_otp tới tệp PHP. Tương tự, phương thức verifyOTP[] gửi mã OTP do người dùng nhập với tham số hành động tương ứng
function sendOTP[] {
$[".error"].html[""].hide[];
var number = $["#mobile"].val[];
if [number.length == 10 && number != null] {
var input = {
"mobile_number" : number,
"action" : "send_otp"
};
$.ajax[{
url : 'controller.php',
type : 'POST',
data : input,
success : function[response] {
$[".container"].html[response];
}
}];
} else {
$[".error"].html['Please enter a valid number!']
$[".error"].show[];
}
}
function verifyOTP[] {
$[".error"].html[""].hide[];
$[".success"].html[""].hide[];
var otp = $["#mobileOtp"].val[];
var input = {
"otp" : otp,
"action" : "verify_otp"
};
if [otp.length == 6 && otp != null] {
$.ajax[{
url : 'controller.php',
type : 'POST',
dataType : "json",
data : input,
success : function[response] {
$["." + response.type].html[response.message]
$["." + response.type].show[];
},
error : function[] {
alert["ss"];
}
}];
} else {
$[".error"].html['You have entered wrong OTP.']
$[".error"].show[];
}
}
Bộ điều khiển. php
Đây là lớp Trình điều khiển PHP được truy cập thông qua AJAX. Hàm tạo của lớp gọi hàm để xử lý các hành động xác minh di động dựa trên yêu cầu được gửi qua lệnh gọi AJAX. Chức năng này xử lý việc gửi OTP đến một thiết bị di động mục tiêu và xác thực OTP do người dùng nhập vào
processMobileVerification[];
}
function processMobileVerification[]
{
switch [$_POST["action"]] {
case "send_otp":
$mobile_number = $_POST['mobile_number'];
$apiKey = urlencode['YOUR_API_KEY'];
$Textlocal = new Textlocal[false, false, $apiKey];
$numbers = array[
$mobile_number
];
$sender = 'PHPPOT';
$otp = rand[100000, 999999];
$_SESSION['session_otp'] = $otp;
$message = "Your One Time Password is " . $otp;
try{
$response = $Textlocal->sendSms[$numbers, $message, $sender];
require_once ["verification-form.php"];
exit[];
}catch[Exception $e]{
die['Error: '.$e->getMessage[]];
}
break;
case "verify_otp":
$otp = $_POST['otp'];
if [$otp == $_SESSION['session_otp']] {
unset[$_SESSION['session_otp']];
echo json_encode[array["type"=>"success", "message"=>"Your mobile number is verified!"]];
} else {
echo json_encode[array["type"=>"error", "message"=>"Mobile number verification failed"]];
}
break;
}
}
}
$controller = new Controller[];
?>
Kết quả xác minh di động SMS TextLocal OTP SMS
Đây là ảnh chụp màn hình đầu ra cho các biểu mẫu HTML để lấy số điện thoại di động và mã OTP từ người dùng