在 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
输出: