我有一个PHP表单,用于从用户收集CSS和HTML代码。然后表单加载一个包含CSS和HTML的PHP页面。
我的问题是HTML显示为纯文本而不是HTML。
在句柄PHP文件中,我使用file_put_contents($newshtml, $html);
在最终的PHP文件中,我在body标签之间使用了include "html.html";
。
为什么HTML输入不被解释为HTML?
HANDLER PHP代码
<?php
$newshtml="asset/html.html";
$newscss="asset/style.css";
$html=htmlentities($_POST['html']);
$css=htmlentities($_POST['css']);
$html=stripslashes(nl2br($html));
$css=stripslashes(nl2br($css));
if(!is_file($newshtml, $newscss))
{
$verifhtml=@fopen($newshtml, "w+");
$verifcss=@fopen($newscss, "w+");
}
$verifhtml=@fopen($newshtml, "r+");
$verifcss=@fopen($newscss, "r+");
file_put_contents($newshtml, $html);
file_put_contents($newscss, $css);
header('Location: layout.php');
?>
最终的PHP代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="style.css" media="screen">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0">
<meta name="format-detection" content="telephone=no">
<title>Important: Responsive Email Templates</title>
</head>
<body style="font-size:12px;" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?php include "html.html"; ?>
</body>
</html>
答案 0 :(得分:8)
请勿在用户输入上调用htmlentities()
。这会将所有HTML特殊字符转换为实体,以便它们按字面显示而不是插入。例如,如果用户输入:
<h3>header</h3>
它将转换为:
<h3>header</h3>
答案 1 :(得分:0)
请改为尝试:
<?php echo file_get_contents("html.html"); ?>