如何用php验证mysql中的6位otp
这是我为optverify.php编写的代码,如果输入的数字错误,它将重定向到index.php,它没有给出错误。它应该给出错误otp的错误,但请帮助我解决这个问题如何用php验证mysql中的6位otp,php,Php,这是我为optverify.php编写的代码,如果输入的数字错误,它将重定向到index.php,它没有给出错误。它应该给出错误otp的错误,但请帮助我解决这个问题 <?php // Create a unique instance of your session variables session_start(); if(isset($_SESSION['usr_id'])) { $uid=$_SESSION['usr_id'];
<?php
// Create a unique instance of your session variables
session_start();
if(isset($_SESSION['usr_id']))
{
$uid=$_SESSION['usr_id'];
} else {
header("Location:login.php");
}
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
if (isset($_POST['verifyotp'])) {
$otpsms = $_POST['smsotp'];
$otpemail = $_POST['emailotp'];
$user = $db->verifyotp($uid);
if($user){
$user['smsotp'] = $otpsms;
$user['emailotp'] = $otpemail;
header("Location:index.php");
} else {
$errormsg = "Invalid otp";
}
}
?>
未测试,但这应该可以工作!!如果这不起作用,请告诉我。将删除此答案 已更新 更改此
$user=$db->verifyotp($uid)代码>至$user=$db->verifyotp($uid、$otpsms、$otpemail)代码>
如果您愿意测试3个参数(1)id(2)smsotp(3)emailotp,请修改如下函数
public function verifyotp($uid, $sotp, $eotp){
$stmt = $this->con->prepare("SELECT uid,smsotp,emailotp FROM users WHERE uid = '$uid' And smsotp='$sotp' And emailotp ='$eotp'");
$stmt->bind_param("i", $uid);
if ($stmt->execute()) {
$stmt->bind_result($uid,$smsotp,$emailotp);
$stmt->fetch();
$user = array();
$user["uid"] = $uid;
$user["smsotp"] = $smsotp;
$user["emailotp"] = $emailotp;
$stmt->close();
return $user;
} else
{
return $stmt;
}
}
您可以向函数verifyotp($uid)传递两个参数,比如verifyotp($uid,$otp)在您的查询中检查相同的内容,以及id使用和条件。能否请您提供一个示例,我有点困惑,因为它不起作用。正在发生相同的事情。在无效OTPT上未给出错误。正在发生相同的事情。在无效otpI上未给出错误。已更新答案。这一行有变化<代码>$user=$db->verifyotp($uid、$otpsms、$otpemail)代码>
public function verifyotp($uid, $sotp, $eotp){
$stmt = $this->con->prepare("SELECT uid,smsotp,emailotp FROM users WHERE uid = '$uid' And smsotp='$sotp' And emailotp ='$eotp'");
$stmt->bind_param("i", $uid);
if ($stmt->execute()) {
$stmt->bind_result($uid,$smsotp,$emailotp);
$stmt->fetch();
$user = array();
$user["uid"] = $uid;
$user["smsotp"] = $smsotp;
$user["emailotp"] = $emailotp;
$stmt->close();
return $user;
} else
{
return $stmt;
}
}