[英]Verification mail - not clickable
注冊成功后,email會向注冊用戶發送驗證鏈接,但是無法點擊到達的文字,它只是說經典文字,點擊這里驗證您的帳戶。
發送驗證郵件頁面:
<?php
require_once 'utils.php';
session_start();
function sendValidationEmail($email) {
$db = connect();
if($db) {
$oneDayAgo = time() - 60 * 60 * 24;
$res = sqlSelect($db, 'SELECT users.id,name,verified,COUNT(requests.id) FROM users LEFT JOIN requests ON users.id = requests.user AND type=0 AND timestamp>? WHERE email=? GROUP BY users.id ', 'is', $oneDayAgo, $email);
if($res && $res->num_rows === 1) {
$user = $res->fetch_assoc();
if($user['verified'] === 0) {
if($user['COUNT(requests.id)'] <= MAX_EMAIL_VERIFICATION_REQUESTS_PER_DAY) {
//Send validation request
$verifyCode = random_bytes(32);
$hash = password_hash($verifyCode, PASSWORD_DEFAULT);
$requestID = sqlInsert($db, 'INSERT INTO requests VALUES (NULL, ?, ?, ?, 0)', 'isi', $user['id'], $hash, time());
if($requestID !== -1) {
if(sendEmail($email, $user['name'], "Email Verification", "<a href='https://example.com/validate/" . $requestID . "/" . urlSafeEncode($verifyCode) . "' />Click this link to verify your email</a>")) {
return 0;
}
else {
// return 'failed to send email';
return 1;
}
}
else {
// return 'failed to insert request';
return 2;
}
}
else {
return 3;
}
}
else {
return 4;
}
$res->free_result();
}
else {
return 5;
}
$db->close();
}
else {
return 6;
}
return -1;
}
if(isset($_POST['validateEmail']) && isset($_POST['csrf_token']) && validateToken($_POST['csrf_token'])) {
echo sendValidationEmail($_POST['validateEmail']);
}
.htaccess 文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^login/?$ login.php [NC,L]
RewriteRule ^register/?$ register.php [NC,L]
RewriteRule ^validate/?([\d]+)?/?([^/]+)?/?$ validate-email.php?id=$1&hash=$2 [NC,QSA,L]
RewriteRule ^reset-password/?([\d]+)?/?([^/]+)?/?$ reset-password.php?id=$1&hash=$2 [NC,QSA,L]
#Disable Caching for dev
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
<FilesMatch "\.(css|flv|gif|htm|html|ico|jpe|jpeg|jpg|js|mp3|mp4|png|pdf|swf|txt)$">
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
FileETag None
Header unset ETag
Header unset Pragma
Header unset Cache-Control
Header unset Last-Modified
Header set Pragma "no-cache"
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
</IfModule>
</FilesMatch>
它不會為我創建任何 error_logs,一切正常,除了用戶無法單擊鏈接。
嘗試: "<a href='https://example.com/validate/". $requestID. "/". urlSafeEncode($verifyCode). "'>Click this link to verify your email</a>"
"<a href='https://example.com/validate/". $requestID. "/". urlSafeEncode($verifyCode). "'>Click this link to verify your email</a>"
"<a href='https://example.com/validate/". $requestID. "/". urlSafeEncode($verifyCode). "'>Click this link to verify your email</a>"
您有 /> 之前單擊此鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.