PHP uniqid对HTML id属性是否安全?

时间:2014-08-31 17:19:34

标签: php html w3c-validation

我想在HTML中使用随机id属性:

<?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 个答案:

答案 0 :(得分:3)

uniqid返回id,其中包含十六进制符号(0-9,a-f)。手动评论中解释了这一点 - http://php.net/manual/en/function.uniqid.php#95001

所以,是的,这对于html属性是安全的。

答案 1 :(得分:2)

是的,它是保存,只要你不生成两次id,这是非常不明智的。

我会以另一种方式做到这一点。也许你想把它介绍到你的图书馆

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

在你的模板中:

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

如果您使用的是较早版本的HTML,我们需要先输入一个字母作为id(注释中来自@ mb21的状态):

<?php $id = 'mycontrol' . getNextInt(); ?>