我有一个非常奇怪的问题。我正在使用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>
缺少“&amp; key”。为什么?非常奇怪的虫子!!!
完整的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";
答案 0 :(得分:7)
您需要使用&
&
对'<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>'
或更好:
{{1}}
答案 1 :(得分:0)
&key
用作字符串,例如。 echo '&key';
,并不意味着什么特别的 - 它只是一个普通的字符串。你能粘贴整个代码吗?
问题可能是&
字符是HTML中的特殊字符。
答案 2 :(得分:0)
把钥匙放在第一位:
<a href="http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '">http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '</a>
答案 3 :(得分:0)
Gumbo关于将&
编码为&amp; amp;在HTML文档中。
您可以让PHP的http_build_query()执行构建有效查询字符串所需的所有编码。
/* testdata: */ $userid=12; $actkey='abc&def';
$params = http_build_query(array(
'id'=>$userid,
'key'=>$actkey
), '', '&');
$url = 'http://www.domain.com/act.php?'.$params;
echo $url;
打印http://www.domain.com/act.php?id=12&key=abc%26def