gpt4 book ai didi

php - htmlspecialchars 的问题

转载 作者:行者123 更新时间:2023-11-30 06:58:57 25 4
gpt4 key购买 nike

我正在从以下 php 代码生成链接。链接出现在浏览器中,生成的 html 代码看起来不错,但是链接不可点击。我已经在 IE 和 FF 中对此进行了测试,并尝试使用 FireBug 查看无济于事。

生成表单的代码

$uploadhtml = htmlspecialchars(json_encode("<form action='up.php' method='post'
enctype='multipart/form-data'>
<label for='file'>Filename:</label>
<input type='file' name='file' id='file'/>
<br />
<input type='hidden' name='pk' value='".$pk."'>
<input type='hidden' name='username' value='".$USERNAME."'>
<input type='submit' name='submit' value='Submit' onclick=\"setTimeout(function() {
updateByPk('Layer2', '".$pk."', '".$brand."', '".$pg."'); } ),1250);\" />
</form>"), ENT_QUOTES);

生成的 html 代码:

    <a onclick="makewindows(&#39;&quot;<form action=&#39;up.php&#39; method=&#39;
post&#39;\r\nenctype=&#39;multipart\/form-data&#39;>\r\n<label for=&#39;
`file&#39;>Filename:<\/label>\r\n<input type=&#39;file&#39; name=&#39;file&#39; id=&#39;`file&#39;\/> \r\n<br \/>\r\n<input type=&#39;hidden&#39; name=&#39;pk&#39; value=&#39;
380118179930&#39;>\r\n<input type=&#39;hidden&#39; name=&#39;username&#39; value=&#39;
janmaybach&#39;>\r\n<input type=&#39;submit&#39; name=&#39;submit&#39; value=&#39;
Submit&#39; onclick=\&quot;setTimeout(function() { updateByPk(&#39;Layer2&#39;,
&#39;380118179930&#39;, &#39;Ed Hardy&#39;, &#39;1&#39;); } ),1250);\&quot;
\/>\r\n<\/form>&quot;&#39;); return false;" href="#">Upload files</a>

我猜这是一个 JavaScript 错误,但我不知道如何查明它?

编辑:没有 ENT_QUOTES 的 html 代码:

<a href="#" onclick="makewindows('&quot;<form action='up.php' method='post'\r
\nenctype='multipart\/form-data'>\r\n<label for='file'>Filename:<\/label>\r\n<input
type='file' name='file' id='file'\/> \r\n<br \/>\r\n<input type='hidden' name='pk'
value='380118185183'>\r\n<input type='hidden' name='username' value='janmaybach'>\r
\n<input type='submit' name='submit' value='Submit' onclick=\&quot;setTimeout(function()
{ updateByPk('Layer2', '380118185183', 'Ed Hardy', '1'); } ),1250);\&quot;
\/>\r\n<\/form>&quot;'); return false;">Upload files</a>

它仍然无法点击...,所有内容似乎都被正确引用了?

当我尝试不使用 htmlspecial chars 时,会生成以下 html 输出:

<input type='submit' name='submit' value='Submit' onclick=" settimeout(function()="" {="" updatebypk(="" layer2="" 380118179930="" ed="" hardy="" ,="" 1="" );="" }="" ),1250);="">
'); return false;"&gt;Upload files</a>

最佳答案

正如问题评论中所说,这绝对是可怕的代码,您正在承受后果。主要问题是代码级别的数量:呈现 Javascript 的服务器代码,呈现 HTML 的服务器代码 - 并且差异在每个级别转义并相互干扰。

要改善这种情况,请使用表单创建一个单独的 PHP 页面,并让您的弹出链接打开该页面 - 不需要 Javascript。如果你真的想不惜一切代价避免拥有那个单独的页面,至少要有在页面标题中生成表单的 Javascript 函数(非动态),并且链接只包含对该函数的调用,你的变量为参数。

关于php - htmlspecialchars 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/824622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com