2010-01-28 3 views
4

나는 매우 이상한 문제가있다. PHP 코드에서 PHP 코드를 사용하여 전자 메일 내용을 작성하고이 링크를 생성했습니다."& key"는 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"; 
+0

http://www.domain.com/act.php?id=12&amp;key=abc%26def 나는 당신이 인용 문제가있다 생각합니다. 해당 문자열로 이어지는 전체 PHP 명령을 게시 할 수 있습니까? –

+0

질문 편집 및 링크 생성 방법 게시 – Pentium10

+3

+1 @ StackOverflow, @ PHPNoob1001에 오신 것을 환영합니다. – Sampson

답변

7

당신은 함께 & 문자를 인코딩 할 필요가 character reference&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

하지만 그게 그의 문제는 아닐까요? 그럼에도 불구하고'&'그의 소스 코드에 나타나야합니까? –

+0

&는 쿼리 문자열 seperator-url 인코딩으로 잘못된 효과를 얻습니다. 그는'page.php? id = 5 & key = 7 & someother = 52'를 위해 노력하고 있습니다. 리터럴 앰퍼샌드가 정확합니다. – Erik

+2

@Erik : HTML 컨텍스트 거기에'&'문자 참조로 표현해야합니다. – Gumbo

0

&key은 문자열로 사용됩니다. echo '&key';은 특별한 의미는 아닙니다. 단지 정상적인 문자열입니다. 전체 코드를 붙여 넣을 수 있습니까?

& 문자는 HTML에서 특수 문자 일 수 있습니다. 애초에

+0

아마 맞을 것입니다. 내 이메일 내용은 "html" – phpnoob1001

0

넣어 키

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

검보은 & A로서 부호화 & 대해 오른쪽이고; 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; 

인쇄

+0

답변 해 주셔서 감사합니다. 매우 높이 평가 =) – phpnoob1001