2014-08-31 3 views
3

나는 HTML에 임의의 id 속성을 사용하고 싶습니다 :PHP는 HTML id 속성에 대해 uniqid 안전합니까?

<?php $id = uniqid(); ?> 
<div data-cycle-prev="#<?php echo $id; ?>_slideshow_prev"> 
    <div id="<?php echo $id; ?>_slideshow_prev"></div> 
</div> 

나는 그것을 생성하는 PHP 방법 uniqid를 사용하고 있지만, 안전하고 W3C 준수 만약 내가 몰라?

준수에 대한 우려 사항은 PHP가 출력하는 생성 된 HTML에 대한 것입니다. 모든 문자가 HTML 속성에 허용되는 것은 아니므로 uniqid()이 허용 된 문자 만 생성하는지 궁금합니다.

+2

나는 이것을 사용하는 것에 별다른 차이가 없다. 유일한 보안 관련 문제는 누군가/또는 봇이 임의의 문자가 무엇인지 파악하지 못하게하는 것입니다. 문서를 생성했거나 보호하려고 시도하고 있습니다. 필자가 아는 한 PHP는 W3C와 호환되지 않습니다. HTML, 네. –

+0

답변 해 주셔서 감사합니다. 준수에 대한 우려는 생성 된 html PHP 출력에 대한 것이 었습니다. 모든 문자가 html 속성에 허용되는 것은 아니기 때문에 uniqid()가 허용 된 문자 만 생성하는지 궁금합니다. – drskullster

+2

당신을 진심으로 환영합니다. 매뉴얼을 참고하십시오 http://php.net/manual/en/function.uniqid.php –

답변

2

uniqid은 16 진수 기호 (0-9, a-f)가 포함 된 id를 반환합니다. 이것은 수동적 주석에 설명되어 있습니다. - http://php.net/manual/en/function.uniqid.php#95001

그래, 이것은 html 속성에 안전합니다.

+0

$ more_entropy 인수에 true를 전달하면 마침표도 포함됩니다. 이 경우 ID 속성에는 안전하지 않습니다. –

2

예, ID를 두 번 생성하지 않는 한 저장하기가 매우 쉽지 않습니다.

나는 다른 방법으로 그것을 할 것이다. 어쩌면 당신은 당신의 라이브러리

function getNextInt() { 
    static $i = 0; 
    $i++; 
    return $i; 
} 

에 그리고 템플릿이을에 소개 할 : 당신이 HTML의 이전 버전을 사용하는 경우

<?php $id = getNextInt(); ?> 
<div data-cycle-prev="#<?php echo $id; ?>_slideshow_prev"> 
    <div id="<?php echo $id; ?>_slideshow_prev"></div> 
</div> 

, 우리는에서 ID와 (statet 첫번째 편지가 필요 @ mb21 의견에) :

+2

HTML 4 및 이전 버전에서'id'는 문자로 시작해야합니다. – mb21

+0

아니요, 해킹이 아닙니다. 이것은 PHP에만 국한되지 않고 언어 기능입니다. 정적은 변수가 첫 번째 호출시 초기화되지만 다음 호출에서는 마지막 값과 함께 사용할 수 있음을 의미합니다. –

+0

감사합니다. @ mb21, 업데이트했습니다. –