我尝试为编辑提供编辑。它必须具有预览功能。有2种形式。第一个表单提交预览,第二个表单在预览时出现,并发送变量以将其保存在数据库中。问题是,当提交第二个表单时,所有引号都会消失。我尝试了mysql_real_escape_string,htmlspecialchars,htmlentitles,但没有任何效果。你知道问题出在哪里吗? 可能是有问题,因为我使用变量'$ content'来存储网站的内容,而不是使用'echo'直接输出? 谢谢!
<td><input style='float:left;' type='submit' name='jobpreview' value='preview' />
</form>";
if(isset($_GET['preview']))
{
$_POST['titel'] = htmlentities($_POST['titel']);
$_POST['elm1'] = htmlentities($_POST['elm1']);
$content .= " <td><form action='?s=intern&sub=neuerjob&preview' method='POST'>
<input type='hidden' name='titel' value='".$_POST['titel']."' />
<input type='hidden' name='elm1' value='".$_POST['elm1']."' />
<input style='float:left;' type='submit' name='jobsave' value='save' />
</form></td></tr></table>";
}
答案 0 :(得分:3)
您需要使用second parameter to htmlentities()
对报价进行编码。
$titel = htmlentities($_POST['titel'], ENT_QUOTES);
$elm1 = htmlentities($_POST['elm1'], ENT_QUOTES);
<input type='hidden' name='titel' value='".$titel."' />
<input type='hidden' name='elm1' value='".$elm1."' />
为此目的,htmlentities()
有点矫枉过正,您可以使用htmlspecialchars()
还有ENT_QUOTES
param。
$titel = htmlspecialchars($_POST['titel'], ENT_QUOTES);
$elm1 = htmlspecialchars($_POST['elm1'], ENT_QUOTES);