2016-08-27 23 views
2

這裏是我的代碼爲optverify.php如果輸入數字是錯誤的重定向到index.php它不給error.its應該給錯誤的錯誤otp,但請幫助我解決這個問題如何驗證從php mysql的6位otp

<?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"; 
    } 

} 

?> 

和我的數據庫功能代碼如下所示

public function verifyotp($uid){ 
     $stmt = $this->con->prepare("SELECT uid,smsotp,emailotp FROM users WHERE uid = '$uid'"); 
     $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; 
    } 

    } 
+0

您可以將兩個參數傳遞給函數verifyotp($ uid),比如verifyotp($ uid,$ otp)並在查詢中檢查相同的id以及使用和條件。 –

+0

可以你給我舉一個例子,我有點迷惑做它 –

+0

它不工作同樣的事情正在發生它不給錯誤無效otp –

回答

0

沒有測試,但這應該工作!讓我知道如果這不起作用。將刪除這個答案。

更新

更改此$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; 
    } 

    } 
+0

ts不工作同樣的事情發生它不給錯誤無效otp –

+0

我已經更新了答案。變化在這一行。 '$ user = $ db-> verifyotp($ uid,$ otpsms,$ otpemail);' –