javascript
  • php
  • highslide
  • 2014-09-14 4 views 1 likes 
    1

    내 웹 사이트에 highslide 라이브러리를 사용하고 있으며, 항상 사용하지 않는 코드가 화면에 인쇄되어 있지만 그 이유는 모르겠습니다. 이것은 내 코드입니다. :때때로 자바 스크립트 코드가 화면에 출력됩니다.

    <script type="text/javascript"> 
    
    hs3.graphicsDir = '<?echo $RootPath;?>/ExternalLibrary/highslide/graphics/'; 
    hs3.align = 'center'; 
    hs3.transitions = ['expand', 'crossfade']; 
    hs3.fadeInOut = true; 
    hs3.outlineType = 'glossy-dark'; 
    hs3.wrapperClassName = 'dark'; 
    hs3.captionEval = 'this.a.title'; 
    hs3.numberPosition = 'caption'; 
    hs3.useBox = true; 
    hs3.width = 600; 
    hs3.height = 400; 
    
    hs3.addSlideshow({ 
        //slideshowGroup: 'group1', 
        interval: 5000, 
        repeat: false, 
        useControls: true, 
        fixedControls: 'fit', 
        overlayOptions: { 
         position: 'bottom center', 
         opacity: 0.75, 
         hideOnMouseOut: true 
        }, 
        thumbstrip: { 
         position: 'above', 
         mode: 'horizontal', 
         relativeTo: 'expander' 
        } 
    }); 
    
    var miniGalleryOptions1 = { 
        thumbnailId: 'thumb1' 
    } 
    </script> 
    

    여기서 $ RootPath는 PHP 변수이며 값은 Portal입니다. 화면에 인쇄 된 코드는 $ RootPath 변수 다음에 오는 코드입니다.

    답변

    0

    $ RootPath는 일부 주입을 포함하며 이 아니며 값인 "Portal"- 무엇을!?!? 나를 참아주십시오.

    "</script >"또는 이와 유사한 것을 포함합니다. Doubting Taha 인 경우 실제 렌더링 된 HTML을 확인하십시오. 그러면 브라우저가 을 닫고 스크립트 요소가 다음과 같은 결과를 가져 와서 정상적인 스크립트되지 않은 HTML로 처리됩니다. (이 순서 "<을 /"가 발생하면 내 지식 최신 브라우저 적어도 "</스크립트"로 그것을 필요로하지만 브라우저는 기술적으로, 스크립트 요소의 PCDATA를 종료 할 수 있습니다.)

    를 해결하려면 /이를 방지, 항상json_encode은 /에서 JavaScript으로 사용되는 PHP의 값으로 사용하십시오. HTML 컨텍스트에 안전하지 않은 HTML 텍스트를 작성할 때 htmlentities가 자동으로 사용되어야하는 것처럼 자동이어야합니다. 주입 나쁜/잘못된 graphicsDir 값 발생합니다이 변경 후

    hs3.graphicsDir = <?echo json_encode("$RootPath/ExternalLibrary/highslide/graphics/"); ?>; 
    

    하지만 것이다 하지 "여기

    는 (필자는 <?= ?> 태그를 사용하는 것이 좋습니다 있지만) 정확하게 코드를 작성하는 방법입니다 HTML 자체를 "깨뜨릴"수 있습니다. 다시 한 번 실제 HTML 값을보고 $ RootPath의 값을 확인하십시오.

    또한 json_encode를 사용하면 PHP/JavaScript 인터페이스를 정리할 수 있습니다. 위의 경우 결과 JSON String 값의 일부인 주변 자바 스크립트 따옴표를 생략 할 수있었습니다. 많은 값을 전달해야하는 경우 동일한 기술을 사용하여 배열 구성을 고려하고 JSON으로 인코딩 된 결과를 제공하십시오.

    +0

    사실, 내 친구 야,PHP 변수 다음에 끝난다. 왜 그런가? 왜 이런 일이 발생하는지 이해하지 못했고 왜 $ RootPath에 또는 이와 유사한보기가 포함되어 있는지 이해할 수 없었습니다. 제발 그걸 설명해주세요. –

    +0

    @OmarTaha 나는 * 값이 어디서 오는지를 모른다. 그것은 당신이 추적하는 것입니다 :) 그것은 우발적 인 할당 일 수 있습니다. * 또는 * 누군가가 악의적 인 가치에 빠지려 시도했을 수도 있습니다. 코드에서 문제가있는 값이 할당 된 위치/이유를 추적하십시오. – user2864740

    +0

    글쎄, 당신의 코드를 사용하려고했지만, 같은, 그것은 여전히 ​​나타납니다. –

     관련 문제

    • 관련 문제 없음^_^