Добавить ссылку для отправки электронного письма на страницу регистрации php

Я хочу добавить ссылку для подтверждения по электронной почте, которая должна отправляться при регистрации нового пользователя, он должен войти и нажать на ссылку, после чего его учетная запись будет активирована. Как я могу сделать это самым лучшим и простым способом? Вот мой код

<?php
error_reporting(E_ALL); 
define('DB_HOST', 'localhost');
define('DB_NAME', 'Users');
define('DB_USER', 'root');
define('DB_PASSWORD', '');

$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); //Use MySQLi as MySQL is depreciated.

 if (isset($_POST['submit'])) {
{
$error=false;
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
 echo "Invalid email format"; 
 $error=true;
}
 }
 {

 if ($_POST['password'] !== $_POST['cpass']) {
   echo "Password and confirm password fields do not match!";
   $error=true;
 }

 }





//No need for functions, do it all here as otherwise you'll have to declare globals.
   if (!$error) {
    $query = mysqli_prepare($con, "SELECT * FROM Websiteusers WHERE email = ?"); //Preparing the SQL query (We don't insert values directly into the query)
    mysqli_stmt_bind_param($query, "s", $_POST['email']); //Bind the email to the SQL query
    mysqli_stmt_execute($query); //Execute the query
    mysqli_stmt_store_result($query); //Store the results
    if(mysqli_stmt_num_rows($query)) //Is the number of rows 0?
    {
        //Yes
        echo "Det verkar som att du redan är registrerad";
    }

    else

    {
        //No
        $query = mysqli_prepare($con, "INSERT INTO WebsiteUsers (firstname,efternamn,email,password) VALUES (?, ?, ?, ?)"); //Preparing the SQL query (We don't insert values directly into the query)
        mysqli_stmt_bind_param($query, "ssss", $_POST['firstname'], $_POST['efternamn'], $_POST['email'], $_POST['password']); //Bind the params to the SQL query
        mysqli_stmt_execute($query); //Execute the query
        echo "Din registrering är slutförd";
     } 
  }
 }
 ?>
<!DOCTYPE HTML> 
<html lang="sv"> 
<head> 
<title>Registrera Dig</title> 
<link rel="stylesheet" type="text/css" href="style.css">

</head> 

<body> 

<table>
    <form method="POST" action="test.php"> 
    <img class="bild">
        <tr> <td class="ett">Namn</td><tr><td> <input class="två"  name="firstname"></td> </tr></tr> 
        <tr> <td class="tre">Efternamn</td><tr><td> <input class="fyra"type="text" name="efternamn"></td></tr> </tr> 
        <tr> <td class="fem">Email</td><tr><td> <input class="sex"type="email" name="email"></td></tr></tr> 
        <tr> <td class="sju">Lösenord</td><tr><td> <input class="åtta"type="password" name="password"></td> </tr></tr> 
        <tr> <td class="nio" >Bekräfta lösenord </td> <tr><td><input class="tio" type="password" name="cpass"></td></tr> </tr>
        <tr> <td><input class="skapa" id="button" type="submit" name="submit" value="Skapa konto"></td> </tr> 
    </form> 
  </table>


</body>
</html>

1 ответ

Я сделал что-то вроде этого...

 $chk = md5(strtolower($_POST['email'])); 

Затем я помещаю это значение $chk в базу данных вместе с адресом электронной почты и другой информацией о пользователе, а в электронном письме, которое я отправляю, у меня есть ссылка... что-то вроде

<?php echo 'http://mysite/verify.php?chk='.$chk ; ?>

Теперь при просмотре verify.php нужно просто найти строку для неактивированного пользователя с идентичным значением $chk и активировать ее при обнаружении.

$mysqlqry = 'UPDATE user.table set active = 1 WHERE active=0 AND chk='.$_REQUEST['chk'] ;

Надеюсь, это поможет вам начать.

Другие вопросы по тегам