【问题标题】:Inject code with nested quotes and apostrophes?使用嵌套引号和撇号注入代码?
【发布时间】:2014-02-21 12:24:44
【问题描述】:

我的 PHP 文件中有这段代码。

var my_edit = "<div title='Edit record: "+ rowObject['my_id'] +"' 
 onclick=\"jQuery('#grid').jqGrid('editGridRow', '" + options.rowId + "',
 { onInitializeForm : $upload } );\" >Edit</div>";

变量 $upload 是这样的:

$upload = <<<UPLOAD

   function (formid) {

      alert('I am in UPLOAD!');
      $("#cusom_id", formid).button();
      // other code with many quotes and apostrophes

   }

UPLOAD;

我的代码不起作用,因为引号和撇号存在错误。

将我的 $upload 函数注入我上面发布的第一个代码片段中的正确方法是什么?

【问题讨论】:

    标签: javascript php jqgrid jqgrid-php


    【解决方案1】:

    你需要转义你的引号,你应该可以使用addslashes()

    $upload = <<<UPLOAD
    function (formid) {
      alert('I am in UPLOAD!');
      $("#cusom_id", formid).button();
      // other code with many quotes and apostrophes
    }
    UPLOAD;
    $upload = addslashes($upload);
    // now you can embed it in the string my_edit.
    

    【讨论】:

      【解决方案2】:

      好吧,说实话!这不会正常工作,这不是一个好习惯..

      我想知道你为什么在 $upload 中使用 PHP 变量来调用 javascript 函数,而你可以通过 javascript 函数本身直接访问它!

      例如...

      function myUpload (formid) {
      
        alert('I am in UPLOAD!');
        $("#cusom_id", formid).button();
        // other code with many quotes and apostrophes
      

      }

       var my_edit = "<div title='Edit record: "+ rowObject['my_id'] +"'onclick=\"jQuery('#grid').jqGrid('editGridRow','" + options.rowId + "', {onInitializeForm : myUpload(formid) } );\" >Edit</div>";
      

      【讨论】:

      • 您好,感谢您的回复,尽管此代码是复杂的 PHP + MySQL + Javascript 项目的一部分。引用的代码是 PHP 文件的一部分
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2013-10-18
      • 2018-09-21
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多