1

以下の PHP 文字列の出力は正しくありません。最後に追加の ( "> ) が表示されます。何が間違っているのか教えてください。

$part2 = HTMLentities('<input type="hidden" name="custom" value="<?php print($_SESSION["muser"]."-".$_SESSION["mpass"]);?>">');
print $part2;

ありがとう、KRA

4

3 に答える 3

3

既に PHP モードになっている場合は、<?php ?>構文の代わりに文字列連結を使用する必要があります。この例では、html の作成とエスケープ部分を分割しています。

$html = '<input type="hidden" name="custom" value="' . htmlspecialchars($_SESSION["muser"] . "-" . $_SESSION["mpass"]) . '">';

$part2 = htmlentities($html);
print $part2;
于 2013-02-10T15:08:19.450 に答える
0

これはあなたが探しているものの多くだと思います:

$part = '<input type="hidden" name="custom" value="' . htmlentities($_SESSION['user'] . '-' . $_SESSION['mpass']) . '" />';

あなたの例には、貧弱な PHP 構文がたくさんあります。

  • <?phpタグを使用して、HTML から PHP にエスケープします。PHPファイルがある場合、それについて考える1つの方法は、実際にはHTMLドキュメントを持っているということですが、<?phpタグを追加してPHPコードを書き込むことができます.あなたの例では、PHP内からHTMLを印刷しようとしています. 、確かに複雑になる可能性があります。<?phpすでに PHP ブロックに入っているので、開始タグ を使用する必要はありません。
  • 文字列を連結して変数に格納する場合、関数を使用する必要はありませんprint。このprint関数は、画面にテキストを書き込むために使用されます。私が書いた例のように、変数名を使用して文字列を結合することができます。
  • htmlentities文字列内の HTML をテキストにレンダリングするために使用されます。htmlentities不明な (ユーザーが入力した) データが HTML を変更しないようにするために使用します。input無効な HTML でタグが壊れないようにするために、上記のように $_SESSION 変数で htmlentities を使用することをお勧めします。文字列全体で使用すると、HTML が生のテキストであるかのように印刷されます。

これを PHP ブロックの外側から記述する方法は次のとおりです。

<?php
    // initial PHP code
?>

<input type="hidden" name="custom" value="<?php echo htmlentities($_SESSION['user'] . '-' . $_SESSION['mpass']) ?>" />

<?php
    // continue PHP code
?>
于 2013-02-10T15:26:45.360 に答える
0

末尾に > が追加されているためです。これを試して:

$part2 = HTMLentities('<input type="hidden" name="custom" value="<?php print($_SESSION["muser"]."-".$_SESSION["mpass"]);?>"');
print $part2;
于 2013-02-10T15:07:25.707 に答える