What are the differences between creating a hyperlink directly and generating a masked link in PHP for data collection purposes?

When creating a hyperlink directly, the URL is visible to users and can potentially expose sensitive information. To address this issue, you can generate a masked link in PHP by using a combination of encryption and decryption techniques to hide the actual URL. This helps protect the data being passed through the link and ensures user privacy.

<?php

// Function to encrypt the URL
function encryptURL($url) {
    $key = "secret_key";
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $url, MCRYPT_MODE_CBC, md5(md5($key))));
    return urlencode($encrypted);
}

// Function to decrypt the URL
function decryptURL($encrypted) {
    $key = "secret_key";
    $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(urldecode($encrypted)), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
    return $decrypted;
}

// Encrypt the URL
$originalURL = "https://example.com/data?user_id=123";
$maskedURL = encryptURL($originalURL);

// Generate the masked link
echo "<a href='https://example.com/redirect.php?url=$maskedURL'>Click Here</a>";

?>