我有一个非常奇怪的问题。我使用PHP,在我的PHP代码中,我编写了电子邮件内容并生成了以下链接:
....
<a href="http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '">http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '</a>
....在大多数情况下,它工作得很好。然后,我收到很多抱怨,说它们不能激活。在检查他们的电子邮件后,我发现了这个:
<a href="http://www.domain.com/act.php?id=20090=hsdf87hsf89sd">http://www.domain.com/act.php?id=20090=hsdf87hsf89sd'</a>缺少"&key“。为什么?非常奇怪的bug!
完整的PHP命令:
$content = '<div style="font-family:Calibri; color:#333;">
Hi there, <br><br>
Thank you for register to our website, click the following link to activate your account:<br><br>
<a href="http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '">http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '</a><br><br>
XXX Team</div>';Gumbo可能是对的,我的电子邮件内容是基于HTML的:
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";发布于 2010-01-29 01:55:41
您需要使用像&这样的character reference对&字符进行编码
'<a href="http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '">http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '</a>'或者更好:
'<a href="' . htmlspecialchars('http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey) . '">' . htmlspecialchars('http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey) . '</a>'发布于 2010-01-29 01:57:07
用作字符串的&key,例如。echo '&key';,并没有什么特别的意思--它只是一个普通的字符串。你能粘贴你的整个代码吗?
问题可能是&字符是HTML语言中的特殊字符。
发布于 2010-01-29 02:16:11
把key放在首位:
<a href="http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '">http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '</a>https://stackoverflow.com/questions/2156671
复制相似问题