📜  在 Live Server 中使用PHP进行电子邮件 OTP 验证

📅  最后修改于: 2022-05-13 01:56:25.152000             🧑  作者: Mango

在 Live Server 中使用PHP进行电子邮件 OTP 验证

任务是创建和设计一个注册和登录表单。在注册表单中,用户将使用自定义用户名和密码以及有效的电子邮件进行注册,然后用户将通过电子邮件收到 OTP,并在成功验证 OTP 用户帐户后将创建并存储数据在 MySQL 数据库中,然后用户将被重定向到主页。在登录表单中,用户可以使用用户在创建新帐户时输入的用户名和密码登录。

注意:我们将在实时服务器中实现这一切,任何人都可以在自己的本地服务器上实现这一点,例如 XAMPP,但电子邮件验证部分在本地服务器中不起作用。

报名表方法:

  • 第一个任务是根据我们的要求创建一个 MySQL 服务器 Database 和一个 Table。
  • 我们使用PHP mysqli_connect()函数连接我们的 MySQL 服务器数据库,该函数接受四个参数,即我们的“服务器名”、“用户名”、“密码”和“数据库”。
  • 输入用户的所有详细信息后,我们将使用PHP rand()函数生成一个 6 位随机数并将其存储到本地会话变量中,然后使用PHP邮件程序函数将其发送到用户电子邮件。
  • 当用户进入 OTP 时,我们将与存储在会话中的 OTP 进行验证,如果这些匹配,则存储将用户重定向到主页。
  • 创建一个新表,名称为用户提供的用户名,用于存储该用户的电子邮件和密码。

登录表格的方法:

  • 如上所述连接到数据库,然后检查用户提供的凭据,如果它们与存储在数据库中的数据匹配,则将用户重定向到主页,否则显示相关错误。

注册表单的PHP代码:register。 PHP

PHP


 
alert('password not matches')");
        }
        else{
            if(strlen($password)<8){
                echo(
    "");
            }
            else{
                $query="insert into 1_user(username,email,password)
                        values('$username','$email','$password')";
 
                $sql = "SELECT id,username, password FROM 1_user";
                $result = $con->query($sql);
                $username_already_exist=false;
                $email_already_exist=false;
 
                // Checking if user already exist
                if(($result->num_rows)> 0){
                    while($row = $result->fetch_assoc()) {
 
                        // echo "
id: " . $row["id"] .                             " - username= " . $row["username"] .                             " password= " . $row["password"] . "
";                           if($row["username"]==$username){                                $username_already_exist=true;                             break;                         }                         if($row["email"]==$email){                                $email_already_exist=true;                             break;                         }                     }                 }                   // echo($ok);                 if($username_already_exist==false){                       // This is my hosting mail                     $from ="support@libraryatcoer.tk";                     $to=$email;                     $subject="verify-account-otp";                       // Generating otp with php rand variable                     $otp=rand(100000,999999);                     $message=strval($otp);                     $headers="From:" .$from;                     if(mail($to,$subject,$message,$headers)){                         $_SESSION["username"]=$username;                         $_SESSION["OTP"]=$otp;                         $_SESSION["Email"]=$email;                         $_SESSION["Password"]=$password;                         $_SESSION["registration-going-on"]="1";                         header("Location:verify-otp.php");                     }                     else                         echo("mail send faild");                 }                 else{                     echo(             "");                 }             }         }     } ?>                        Document                                                    
        
                                  
        
                                  
        
                                  
        
                                  
                          
            


PHP


    
 

    
    
    
    Document
    
 
    
    
 
    
     
    
     
    
     
    

 

    
 
    

 


PHP


 

 

    
    
    
    Document
    
 
    
    
 
    
     
    
     
    
     
    

 

    
        
                         
                                      

                                        

                                        

                                        

                           

        
    
 


PHP


query($sql);
 
        if ($result->num_rows > 0) {
            $fnd=0;
            while($row = $result->fetch_assoc()) {
 
                /* echo "
id: ". $row["id"].                 " - username= ". $row["username"].                 " password= " . $row["password"] . "
"; */                   if($row["username"]==$username and                     $row["password"]==$password) {                                              $_SESSION["username"] = $username;                     $_SESSION["registration-going-on"]="0";                     $fnd=1;                     $_SESSION["logged_in"]="1";                     echo '
'.$message.'
';                       echo "";                 }             }             if($fnd==0)                 echo( "");           }         else {             echo( "");         }         $con->close();     } ?>                      Document                                                                               


PHP



 

    
    
    
    Document
    
 
    
    
    
     
    
     
    
     
    

 

    

welcome you are loggend in succesfully

 


发送和验证 OTP 的PHP代码:verify-otp。 PHP

PHP



    
 

    
    
    
    Document
    
 
    
    
 
    
     
    
     
    
     
    

 

    
 
    

 

在未收到 OTP 的情况下重新发送 OTP 的PHP代码:resend-otp。 PHP

PHP



 

 

    
    
    
    Document
    
 
    
    
 
    
     
    
     
    
     
    

 

    
        
                         
                                      

                                        

                                        

                                        

                           

        
    
 

成功 OTP 验证后,将用户数据插入表 1_user:

表模式,每行有以下 4 列:

id (int 数据类型作为主键)

用户名(文本数据类型)

电子邮件(文本数据类型)

密码(文本数据类型)

登录表单的PHP代码也是默认页面:索引。 PHP

PHP



query($sql);
 
        if ($result->num_rows > 0) {
            $fnd=0;
            while($row = $result->fetch_assoc()) {
 
                /* echo "
id: ". $row["id"].                 " - username= ". $row["username"].                 " password= " . $row["password"] . "
"; */                   if($row["username"]==$username and                     $row["password"]==$password) {                                              $_SESSION["username"] = $username;                     $_SESSION["registration-going-on"]="0";                     $fnd=1;                     $_SESSION["logged_in"]="1";                     echo '
'.$message.'
';                       echo "";                 }             }             if($fnd==0)                 echo( "");           }         else {             echo( "");         }         $con->close();     } ?>                      Document                                                                               

个人资料页面的PHP代码:profile。 PHP

PHP




 

    
    
    
    Document
    
 
    
    
    
     
    
     
    
     
    

 

    

welcome you are loggend in succesfully

 

输出: