0

我从我的应用程序提交表单时遇到问题。

我需要将一些 JavaScript 代码从表单发送到控制器页面。html中的代码如下:

<form method="post" action="controller/mycontroller.php">
    <textarea name="code"></textarea>
    <input type="submit" value="send" />
</form>

例如,如果我发送textarea“Hello world”,控制器工作正常,但如果我尝试发送一些javascript代码,比如alert(1);我从服务器收到一条禁止消息。

javascript将代码作为过滤器之类的字符串发送到服务器或允许文件中包含某些内容的任何解决方案.htaccess

谢谢!

重新编辑:测试示例: http: //pruebas.intelectiva.biz/test/

4

3 回答 3

2

您必须首先使用 javascript 转换 textarea 的文本,以将诸如括号之类的代码替换为您永远不会使用的随机字母。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function() {
    $("#send").click(function(event) {
        event.preventDefault();

        var code = $("#code").val();

        code = code.replace(/\(/g, "^)·(");
        code = code.replace(/\{/g, "=?¿¡12");
        code = code.replace(/\</g, "++ççcsacsa");

        $("#code").val(code);
        alert (code);

        $("#form").submit();
    });
});
</script>

然后,在服务器端将文本重新转换为您想要的文本:

<?php
$code = $_POST['code'];
$code = str_replace('^)·(', '(', $code);
$code = str_replace('=?¿¡12', '{', $code);
$code = str_replace('++ççcsacsa', '<', $code);
echo '<script>'. $code . '</script>';
?>
于 2013-05-21T12:17:26.807 回答
0

它不取决于您发布的内容,但我认为这取决于您发布的位置,您确定这action="controller/mycontroller.php"是正确的吗?

试试action="http://www.mysite.com/controller/mycontroller.php"

.htaccess如果你有的话,也张贴你的

是的,如果来自 shell,请将您的项目文件夹和文件设置为正确的权限:

sudo chmod 755 <filename>
于 2013-05-21T09:56:52.543 回答
0

如果你得到一个禁止的错误,那么肯定是权限错误。它发生在我之前。只需右键单击您的 Web 目录,如果您在 ubuntu 上,请确保“其他用途”的文件“controller/mycontroller.php”的权限设置为“读取”

您能告诉我们您使用的是哪个操作系统吗?

(顺便说一句,当您说 action="controller/mycontroller.php" 时,表示文件夹控制器与 HTML 表单位于同一文件夹中)

还要执行 javascript,您的 php 文件应如下所示:

<?php
    echo "<script>" . $_POST['code'] . "</script>";
?>

编辑:嘿朋友!我在我的服务器上尝试了你的例子,它在这里是我的应用程序:

http://106.51.68.115/test/x.html 

与其将表单提交到另一个 php 文件,不如尝试将其提交到同一个文件:

<form method="post" action="controller/mycontroller.php">
    <textarea name="code"></textarea>
    <input type="submit" value="send" />
</form>

<?php
if(isset($_POST['code'])){
print "<script>".$_POST['code']."</script>";
}
?>

编辑 XYZ:试试这个代码,它不涉及 PHP,我认为它应该可以工作:

<html>
<body>
<form name = "x">
<textarea id="code"></textarea></form><button onclick="document.write('<script>'+document.x.code.value+'</script>');">send</button>
</body>
</html>
于 2013-05-21T09:57:31.453 回答