2012-10-04 65 views
1

我有从字符串中拉出来的ta字符串,其中每个值由' - '分隔,如下所示:a-b-c。 在我的数据库我也有一个字段告诉我有多少个值我在这种情况下3. 我需要为每个字符串的值创建一个文本文件,所以我想这样做:从一个字符串到PHP中的一个循环

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

我的问题基本上是:这是做我要找的有效方式吗?或者也许有一种“更好”的方式? 谢谢!

+0

你也许可以做到这一点,而不'$ numberOfValues',因为你已经知道,通过'$ string'。当你爆炸时,只要做'foreach'。 –

+0

这可能更适合[代码评论](http://codereview.stackexchange.com/),标记为 –

回答

1
$values = explode('-', $string); 

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

如果我在循环中插入多个值,您是否认为我也可以应用? (我其实有三个,例如$ values2和$ values3, – ghego1

+0

'array_merge'它们全部放到一个数组中,然后你可以循环...? – deceze

0

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

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

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

  • 在你做你的方式不应该与PHP逻辑混合HTML。最好在不同的模板中使用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”文件,该文件可能会窃取您的会话信息并将其提交给任何域。您通过转义一些已知的危险字符来防止这些威胁是最容易的,这些功能就是其中之一。

+0

对不起,我真的不是专家,你对XSS漏洞的含义是什么? – ghego1

+0

@ ghego1加入到我的回答 – eis

+0

嗯真的很好知道!我会检查我的所有代码!所以,如果我使用htmlspecialchars(),我应该罚款就这个问题,对吧? – ghego1

相关问题