What are the best practices for handling activation emails in PHP without using $_GET?

When handling activation emails in PHP without using $_GET, it is recommended to generate a unique activation token for each user during registration and store it in the database. When the user clicks on the activation link in the email, the token should be verified against the database to activate the user account. This approach enhances security and prevents potential vulnerabilities associated with using $_GET parameters.

// Generate a unique activation token during user registration
$activation_token = bin2hex(random_bytes(16));

// Store the activation token in the database along with other user details
$query = "INSERT INTO users (email, activation_token) VALUES ('$email', '$activation_token')";
// Execute the query to insert user data into the database

// Send the activation email with a link containing the activation token
$activation_link = "http://example.com/activate.php?token=$activation_token";
// Send the email to the user with the activation link

// In the activate.php file, verify the activation token against the database
$token = $_GET['token'];
$query = "SELECT * FROM users WHERE activation_token = '$token'";
// Execute the query to fetch user data based on the activation token

// If a matching user is found, activate the account and update the database
// Update the user's status to 'active' or perform any other necessary actions