从PHP回声中回显htmlspecialchars($ _ SERVER [" PHP_SELF"])

时间:2016-06-27 19:40:32

标签: php html

我试图使用php创建一些动态内容,所以我将html代码回显到我的网页中。但是,当我尝试在表单内的操作标记内插入<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>时,可能会由于某种解析错误而在页面上打印出不需要的可见文本。

我的例子如下。

echo'<form name="PArtifact" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     <input name="printArtifactBut" type="submit"  value="Print Artifact">                
     </form>';

上面的代码将生成&#34;&gt;作为可见文本。有人能告诉我在回声中回应htmlspecialchars($_SERVER["PHP_SELF"])的正确方法吗?

2 个答案:

答案 0 :(得分:4)

您已经打开了PHP,并且您已经在回声表达式中。您只需要concatenate数据:

echo '<form name="PArtifact" method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '"></form>';

但正如我在评论中所说,这是不必要的,因为默认情况下表单操作已经是这个。

实现你的意思的其他方式是退出php部分:

?>
<form name="PArtifact" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  <input name="printArtifactBut" type="submit"  value="Print Artifact">                
</form>
<?php

答案 1 :(得分:1)

您的问题归结为对PHP如何工作的基本误解。在回声中完全没有回声;这个概念是一个非常规的概念。如果需要在echo中调用函数,只需关闭正在回显的字符串,使用点将函数调用附加到字符串。然后是另一个点,再用另一个引号打开字符串,继续你离开的地方。

echo'<form name="PArtifact" method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
 <input name="printArtifactBut" type="submit"  value="Print Artifact">                
 </form>';

然而在这种情况下,正如其他人已经说过的那样,你甚至不需要这样做,因为在PHP_SELF属性中使用action是多余的 - 这就是无论如何,action的默认值。因此,对于这种情况,您可以简单地将其全部删掉:

echo'<form name="PArtifact" method="post" action="">
 <input name="printArtifactBut" type="submit"  value="Print Artifact">                
 </form>';

......无论如何,你将获得与你想要的完全相同的效果。