首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTML选项:显示值而不是实际文本

HTML选项:显示值而不是实际文本
EN

Stack Overflow用户
提问于 2018-09-23 08:59:59
回答 1查看 40关注 0票数 0

所以我有点困惑。

我的代码是:

代码语言:javascript
运行
复制
<select name="email" id="email_template" style="width:200px;">
<? foreach($order_email as $omail) { ?>
<option value="<?php echo $omail->text; ?>"> <?php echo $omail->headline; ?></option>
                <? } ?>
                </select>

因此,我的问题是,选项宁愿显示值($omail->text),而不是文本($omail->headline)。

当我使值为空时,它会显示文本。但是,当我在值中输入一个较小的值时,它也会显示。

这个值是一个大的chunck文本(格式化的),大约是300行。

所以我在想,它宁愿展示更大的,还是我错了?

EN

Stack Overflow用户

回答已采纳

发布于 2018-09-23 20:40:49

问题在于,您的值包含html;如果您将“原样”输出到页面(就像您在这里所做的那样),那么浏览器将看到值内的结束标志,认为您打算关闭标记,然后将后面的所有内容都视为包含元素。

实际上,您正在产生这样的输出:

代码语言:javascript
运行
复制
<option value="<div>my value</div>" />My expected shown value</option>

但是,因为值内的div包含>符号,所以html无效。您所看到的是浏览器试图呈现您的页面而失败。但真正的问题是你试图用它作为一个价值。

现在您可以使用一些html转义来正确地将html放入一个value属性中,该属性将使用php的html_entities函数并生成如下内容:

代码语言:javascript
运行
复制
<option value="&gt;div&lt;my value&gt;/div&lt;" />My expected shown value</option>

但实际上,正确的处理方法是不要在值中放入大量的html。那只是自找麻烦。由于用户可以自由地操作其中的内容,而且您的系统正在接受该值为html,因此您可能会打开您的系统,以解决一些与安全相关的问题。

此外,您还通过发送隐藏在页面中的数百行html,然后要求浏览器将它们发回,从而给服务器和浏览器带来额外的压力。

只需发送某种标识符,并将html隐藏在服务器的某个位置。对每个人来说都更安全。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52464587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档