2012-11-21 2 views
2

는 소스 코드 .예기치 않은 토큰 불법 자바 스크립트 + 여기에 PHP

생성 된 코드를 PHP없이 수동으로 추가하면 작동합니다.

누군가 그것을 고치는 방법을 알고 있습니까?

+0

어떤 디버깅을 시도하셨습니까? '$ _POST [ 'dir']'이 실제로 게시 한 문자열인지 확인 했습니까? – David

+0

내가 무슨 말을할지 모르겠지만, 아마도 포스트의 PHP 코드 또는 그냥 문자열로 파싱되지 않습니다. – Virus721

+1

** [XSS] (http://en.wikipedia.org)에 취약합니다./wiki/Cross-site_scripting) **. HTML 문서에 외부 데이터를 삽입하지 마십시오. – Quentin

답변

1

:

사용 encodeURI()는 URL 내에서 전달할 수있는 매개 변수에 경로를 변환합니다.

$.post("scan.php?dir=<?= urlencode($_POST['dir']) ?>", function(data){ 
    alert(data); 
}); 
4

사용중인 변수에 URL 매개 변수의 일부가 될 수없는 문자 (:, /, ...)가 포함되어 있습니다. 당신은 당신의 매개 변수를 urlencode 필요

$(document).ready(function(){ 

    $.post("scan.php?dir=" + encodeURI("<?=$_POST['dir']?>"), function(data){ 

     alert(data); 

    }); 

}); 
+0

uriEncode가 작동하지 않습니다. 사용 urlencode(); –

+0

콜론은 허용되지만 백 슬래시에는 인코딩이 필요합니다. – bfavaretto

+0

두 가지 문제를 모두 수정했습니다. 감사. – Sirko

0

문제는 백 슬래시, 다른 답변이 말하는 것처럼 당신이

$(document).ready(function(){ 
    $.post("scan.php?dir=C:\xampp\\htdocs\\windowsMedias\\music", function(data){ 
     alert(data); 
    }); 
}); 
0

처럼 경로로 json_encode해야 제대로 yourURL 매개 변수를 인코딩해야합니다. 이를 위해, 당신은 encodeURIComponent을 사용할 수 있습니다 : 오류의 원인이 무엇

$.post("scan.php?dir=" + encodeURIComponent("<?=$_POST['dir']?>"), function(data){ 
    alert(data); 
}); 

는 인코딩되지 않은 백 슬래시입니다. URL에 \x이 포함되어 있습니다. 특수 16 진수 이스케이프 시퀀스 표시입니다. 다음 두 문자가 유효한 16 진수 (즉, [0-9a-fA-F])가 될 것으로 예상합니다. 그렇지 않으면 오류가 발생합니다.

관련 문제