Вот мой полный сценарий решения:
CREATE TABLE signup (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL,
email VARCHAR(30) NOT NULL,
token VARCHAR(30) NOT NULL,
verified VARCHAR(50),
registration_date TIMESTAMP,
maxdate TIMESTAMP
);
![Signup MySQL Table](https://i.stack.imgur.com/DPt0D.jpg)
Добавить страницу регистрации signup.php
Добавьте следующую форму:
<form name="signupform" method="post" action="process.php">
Username:
<input type="text" name="username">
<br> Password:
<input type="text" name="password">
<br> Email:
<input type="text" name="email">
<br>
<input type="submit" value="Signup">
</form>
Создать process.php страница:
<?php
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
date_default_timezone_set('America/New_York');
$registration_date = date('Y-m-d H:i:s');
$verified = 0;
$maxdate = date('Y-m-d H:i:s', strtotime($registration_date . ' +1 day'));
$salt = uniqid(mt_rand() , true);
$token = msha1(registration_date . md5($salt));
$sql = "INSERT INTO signup (username, password, email, token, verified, registration_date, maxdate) VALUES ('$username', '$password', '$email', '$token', '$verified', '$registration_date', '$maxdate')";
if (mysqli_query($conn, $sql))
{
$msg = 'Please click this link to verify your email: http://www.yourdomain.com/verifyemail.php?token=' . $token;
mail($email, $subject, $msg);
}
else
{
echo mysql_error();
}
?>
впоследствии создать verifyyemail.php :
<?php
$token = $_REQUEST['token'];
date_default_timezone_set('America/New_York');
$current_time = date('Y-m-d H:i:s');
$sql = "SELECT * FROM users WHERE token='$token' AND maxtime >'$current_time' AND verified=0";
$result = mysqli_query($conn, $sql);
$notverified = mysqli_num_rows($result);
if ($notverified)
{
$sql = "update signup set verified=1 where token='$token'";
$result = mysqli_query($conn, $sql);
if ($result)
{
echo 'Email verified';
}
else
{
echo 'Error';
}
}
else
{
echo 'Link expired';
}
?>