1

我有一个从数据库中提取的字符串,其中每个值都由“-”分隔,如下所示:abc。在我的数据库中,我还有一个字段告诉我我有多少个值,在这种情况下为 3。我需要为字符串的每个值创建一个文本文件,所以我正在考虑做这样的事情:

$numberOfValues=db=>n;
$string=bb=>string;
$singleValue = explode("-", $string);
for($i=0;$i<$numberOfValues;$i++): {
echo ('input type="text" value="'.$singleValue[$i].'">');
}

我的问题基本上是:这是做我正在寻找的有效方法吗?或者也许有一个“更好”的方法?谢谢!

4

3 回答 3

2

除了提到的关于 foreach 和有效输入标签的事情之外,

  • 您不应该像以前那样将 HTML 与 PHP 逻辑混为一谈。最好将 HTML 放在单独的模板中。
  • 确保您始终在 HTML 中推送的值上发生 HTML 转义,除非另有明确说明,以便字符", ', <,>正确转义并且您不会留下 XSS 漏洞。

在 XSS 上,您的代码中的示例:

echo ('input type="text" value="'.$singleValue[$i].'">');

现在,如果我们假设用户可以影响 的内容$singleValue[$i],他们可以在那里推送内容,例如"><script src="http://malicioussite.com/hacking.js"></script><span id="

这将使生成的 HTML 在页面上

input type="text" value=""><script src="http://malicioussite.com/hacking.js"></script><span id="">

这将强制最终用户浏览器执行“hacking.js”文件,例如,该文件可以窃取您的会话信息并将其提交到任何域。通过转义一些已知的危险字符,您可以最轻松地防范此类威胁,这就是htmlspecialchars()函数的用途。

于 2012-10-04T07:36:26.080 回答
1
$values = explode('-', $string);

foreach ($values as $value) {
    printf('<input type="text" value="%s">', htmlspecialchars($value));
}
于 2012-10-04T07:37:14.880 回答
0

没关系。但是打开和关闭输入标签:)

echo ('<input type="text" value="'.$singleValue[$i].'"/>');
于 2012-10-04T07:32:34.900 回答