2013-02-10 21 views
1

以下PHP字符串的输出不正确。它显示额外的(“>)在结束请帮助那些自己做错了什么,我做PHP字符串连接问题

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

感谢,KRA

回答

3

如果您在PHP模式是已经,您应该只使用字符串连接而不是<?php ?>语法;这个例子分割了HTML创建和逃逸部分

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

$part2 = htmlentities($html); 
print $part2; 
+0

谢谢,它正在工作... – KRA 2013-02-10 16:05:12

0

这是因为有一个额外>末 试试这个:?

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

它是输入标签结束标记。如果我删除它,它不起作用。 – KRA 2013-02-10 15:09:28

0

我认为这更多的是你在找什么:

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

你有很多可怜的PHP语法在你的例子。

  • 我们使用<?php标签将HTML转换为PHP。当你有一个PHP文件时,你可以考虑的一种方法就是你真的有一个HTML文档 - 但你可以添加<?php标签来编写PHP代码。在你的例子中,你试图从内部打印HTML PHP,它可以承认复杂。您已经在PHP块中,因此您不需要使用开头的<?php标签。
  • 当串联字符串存储在变量中时,不需要使用print函数。 print函数用于将文本写入屏幕。您可以像我在编写的示例中那样使用变量名称来组合字符串。
  • htmlentities用于将字符串中的任何HTML呈现为文本。我们使用htmlentities来保留未知(用户输入的)数据来修改我们的HTML。像上面所做的那样,在$ _SESSION变量上使用htmlentities是一个好主意,以确保它们不会破坏带有无效HTML的input标记。在整个字符串上使用它只会打印您的HTML,就像它是原始文本一样。

下面是它从一个PHP块之外编写方式:

<?php 
    // initial PHP code 
?> 

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

<?php 
    // continue PHP code 
?>