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

这是因为末尾有一个额外的>。试试这个:

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

我认为这更多的是您正在寻找的:

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

您的示例中有很多糟糕的 PHP 语法。

  • 我们使用<?php标签将 HTML 转义为 PHP。当您有一个 PHP 文件时,您可以考虑的一种方式是您确实有一个 HTML 文档 - 但是您可以添加<?php标签来编写 PHP 代码。在您的示例中,您尝试从 PHP 中打印 HTML ,这可能会变得很复杂。您已经在 PHP 块中,因此您不需要使用开始<?php标记。
  • 连接字符串以存储在变量中时,您不需要使用该print函数。该print函数用于将文本写入屏幕。您可以像我编写的示例中那样使用变量名称来组合字符串。
  • htmlentities用于将字符串中的任何 HTML 呈现为文本。我们htmlentities用来防止未知(用户输入的)数据修改我们的 HTML。像我在上面所做的那样在 $_SESSION 变量上使用 htmlentities 是个好主意,以确保它们不会input用无效的 HTML 破坏我们的标签。在整个字符串上使用它只会打印您的 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 回答