"& anahtar" ne

4 Cevap php

Ben çok garip bir sorun var. Ben php kullanıyorum. Benim php kodu, ben e-posta içeriğini yazdı ve bu bağlantıyı oluşturmak:

....
<a href="http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '">http://www.domain.com/act.php?id=' . $userid . '&key=' . $actkey . '</a>
....

Çoğu kez, iyi çalışıyor. Sonra, onların e-postalarınızı kontrol ettikten sonra ben buldum, onlar aktive olamaz söyleyerek çok şikayet alırsınız:

<a href="http://www.domain.com/act.php?id=20090=hsdf87hsf89sd">http://www.domain.com/act.php?id=20090=hsdf87hsf89sd'</a>    

"& Anahtar" eksik. NEDEN herkes biliyor musun? Çok garip bir hata!

EDIT:

Tam PHP komut:

$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>';

Bamya doğru olabilir, benim e-posta içeriği html dayanır:

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

4 Cevap

Bir character reference &amp; gibi olan & karakteri kodlamak gerekir:

'<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>'

Ya da daha iyi:

'<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>'

&key dize, örneğin olarak kullanılır. echo '&key';, özel bir şey demek değildir - bu sadece normal bir dize var. Eğer bütün kod yapıştırın misiniz?

Sorun & karakter özel karakter HTML olduğunu olabilir.

Ilk etapta anahtar koymak:

<a href="http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '">http://www.domain.com/act.php?key=' . $actkey . '&id=' . $userid . '</a>

Gumbo is right about encoding & as &amp; within an html document.
You can let php's http_build_query() do all the encoding necessary to build a valid query string.

/* 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;

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