2009-07-22 2 views
2

JavaScript에서 JavaScript를 올바르게 탈출하려면 어떻게해야합니까?

parent.document.getElementById('<?php echo $_GET['song']; ?>') 
    .innerHTML = '<img src="heart.png" onmouseover="heartOver('');" >'; 

onmouseover="heartOver(''); 부분은 내 자바 스크립트를 나누기 ... 내가 할 수없는 무언가 할 수 있지만 수 있습니다. 따옴표를 피할 수있는 방법이 있나요? 백 슬래시

+0

이이 생성되는 HTML을 사용하는 경우 그것은 명확하게 될 것이다 - PHP는이 경우에 아무것도 할 수하지 않습니다. – Greg

+0

@ 그렉 : 나는 단지 그가 실제로 염려하고있는 비트까지 내려 봤다. 희망은 도움이 ... – Shog9

답변

3

탈출 중첩 된 따옴표 : 또한 \'

, 검증 또는 살균하지 않고 결코 에코 사용자 데이터 :

$song = $_GET['song']; 

// Validate HTML id (http://www.w3.org/TR/REC-html40/types.html#type-name) 
if(!preg_match('/^[a-z][-a-z0-9_:\.]*$/', $song) { 
    // Display error because $song is invalid 
} 

또는

// Sanitize 
$song = preg_replace('/(^[^a-z]*|[^-a-z0-9_:\.])/', '', $song); 
5

그것은 모든 단지 문제를 따옴표를 올바르게 이스케이프 처리합니다.

parent.document.getElementById('<?php echo $_GET['song']; ?>').innerHTML = 
    '<a href="heart.php?action=unlove&song=<?php echo $song; ?>" target="hiddenframe">' 
    + '<img src="images/heart.png" alt="Love!" onmouseover="heartOver(\'\');" width="16" height="16" border="0"></a>'; 

alt 속성이 누락되어 있습니다.

+0

누락 된 끝 인용에 대한 좋은 잡기. – hbw

1

문제는 따옴표로 이스케이프하는 것입니다. '또는'를 \ '또는' "로 바꾸면 작은 따옴표 나 큰 따옴표 중 하나를 이스케이프 처리 할 수 ​​있습니다.

그래서 코드는 다음과 같습니다

parent.document.getElementById('<?php echo $_GET['song']; ?>').innerHTML = '<a href="heart.php?action=unlove&song=<?php echo $song; ?>" target="hiddenframe"><img src="images/heart.png" alt="Love! onmouseover="heartOver(\'\');" width="16" height="16" border="0"></a>';

관련 문제