“& key”在PHP中意味着什么?

时间:2010-01-28 17:54:10

标签: php keyword

我有一个非常奇怪的问题。我正在使用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";

4 个答案:

答案 0 :(得分:7)

您需要使用& &amp;'<a href="http://www.domain.com/act.php?id=' . $userid . '&amp;key=' . $actkey . '">http://www.domain.com/act.php?id=' . $userid . '&amp;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
), '', '&amp;');
$url = 'http://www.domain.com/act.php?'.$params;
echo $url;

打印http://www.domain.com/act.php?id=12&amp;key=abc%26def