在esc_attr()周围包装intval()对于转义输入是多余的吗?

时间:2020-01-23 作者:gardinermichael

我的直觉告诉我,在转义输入时,在intval()中包装esc\\u attr()是多余的,但我想再次检查一下。

另外:考虑到<option value="">- select no. -</option> 如果硬编码/值为null,则不需要转义该输入块,对吗?

以下是我当前的代码设置:

        <select name="_number">
        <option value="">- select no. -</option>
            <?php
            $savedNo = intval( get_post_meta( $post->ID, \'_number\', true ) );
            for ($x = 1; $x <= 100; $x++) {
                echo \'<option value="\'
                    . intval(esc_attr($x)) . \'"\'
                    . ($x === $savedNo ? \' selected="selected"\' : \'\' )
                    . \'>\'
                    . \'No. \' . intval(esc_attr($x))
                . \'</option>\';
            }
            ?>
        </select>
谢谢大家!

2 个回复
最合适的回答,由SO网友:Hector 整理而成

基于WordPress documentation for esc_attr function, 它正在返回字符串值。因此,如果需要整数值,需要使用intval 作用But, 当您想要显示该值或将其作为标记的一部分时,这是没有意义的。

Escape函数对于输出和打印值很有用。如果要在数据库中保存值,则数据类型是一个问题,您可能需要使用intval 功能并排sanitization.

SO网友:Vitauts Stočka

在您的情况下,上不需要任何这些函数$x, 因为它的值是由for 循环和都是安全的。