Что означает «& ключ» в PHP? - PullRequest
4 голосов
/ 28 января 2010

У меня очень странная проблема. Я использую 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>

"& ключ" отсутствует. Зачем? Очень странная ошибка !!!

Полная команда 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>';

Гамбо может быть прав, мой почтовый контент основан на HTML:

$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

Ответы [ 4 ]

7 голосов
/ 28 января 2010

Вам необходимо кодировать символ & с помощью ссылки , например &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>'
0 голосов
/ 28 января 2010

Gumbo подходит для кодирования & как & 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

0 голосов
/ 28 января 2010

Поставь ключ на первое место:

<a href="http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '">http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '</a>
0 голосов
/ 28 января 2010

&key используется как строка, например. echo '&key';, ничего особенного не значит - это просто обычная строка. Не могли бы вы вставить весь код?

Проблема может заключаться в том, что символ & является специальным символом в HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...