【问题标题】:Javascript eval querystringJavascript eval 查询字符串
【发布时间】:2013-12-10 20:24:23
【问题描述】:

目前我正在使用这个小的 php 脚本来评估页面上的 javascript。

编辑

注意:这是可行的,我只是想避免使用 php 来更改部分 javascript

 <script type="text/javascript">
 <?php 
        include 'n1.inc';
        if (isset($_GET['resultado']))
        {       
            if($_GET["resultado"] != null){
                echo $_GET['resultado'];
            }
        }
        include 'n2.inc';
 ?>
 </script>

我知道可以仅使用 javascript 读取查询字符串,因为它已经在以下问题中演示:

How can I get query string values in JavaScript?

JavaScript query string

我试过了:

<script src="n1.js"></script>
<script> eval(someQueryStringFunction()); </script>
<script src="n2.js"></script>

它给出了一个错误,因为查询字符串上的值应该在函数的中间。

如果您想查看 n1.js 和 n2.js,请随时查看https://github.com/kyllopardiun/MapaColoracao

【问题讨论】:

  • 只是不要使用 eval。查看 requirejs 或简单的“dom 脚本添加器”并查看基本的 JS 条件。
  • 1.不要使用eval。 2. 这段代码到底在做什么(除了包括文件)?它所做的只是echo-ing null
  • 我通过查询字符串获得了一个 javascript 函数的一部分。所以这段代码的作用是: 1. 包含函数的第一部分 2. 通过查询字符串获取要包含的结果 3. 包含函数的最后部分
  • 你不能像那样拆分和合并你的 JavaScript 文件。它们在&lt;script&gt;&lt;/script&gt; 标签内单独评估。换句话说,你不能在 n1.js 中开始 { 并在 n2.js 中关闭它。它们必须是完全自给自足、语法正确/完整的文件。
  • 您为什么要在 PHP 代码中包含 Javascript 代码?如果你想这样做,它们需要被包裹在&lt;script&gt; 标签中。除此之外,您需要了解 PHP 将在 Javascript 执行开始之前运行并完成......所以看起来您的代码没有任何意义

标签: javascript php query-string eval


【解决方案1】:

在查询字符串中传递 javascript 根本不起作用。 Javascript 将包含查询字符串中不允许的字符。

如上所述,requirejs 将允许您将 javascript 文件嵌入到页面 DOM 中。

eval 是一个相当严重的安全风险,出于安全原因不推荐使用。有很多关于为什么 eval 是邪恶的文章。

【讨论】:

  • 我使用了 document.location=("index_.php?resultado="+encodeURIComponent(jResult)); 并且获取这些代码行没有问题。
  • 是的,它将对您的 urlParameter 进行编码。不确定您的情况是什么,建议您添加一个 URL 参数,然后使用 switch 语句在您的实际页面上运行正确的代码。这种方式的安全风险更少。
猜你喜欢
  • 2011-08-02
  • 2013-09-15
  • 1970-01-01
  • 2010-10-13
相关资源
最近更新 更多