0

在我的表单中,我有一个包含数据的文本字段,例如 >2012-01-01 <2012-02-01 但是当我序列化表单并发布数据时,该字段只有 >2012-01-01 而不是 < 2012-02-01。

它去哪儿了?

$("#grouppositionsform").live("submit",function(e){ 
    e.preventDefault();
    $('body').addClass('wait');
    $.post("/page.php",$(this).serialize(), function(data){
        $('.showdirectory').fadeOut('slow', function() {
            $(".showdirectory").html(data);
            $(".showdirectory").fadeIn("slow");              
        });
  }).error(function() { 
    //alert("error"); 
  }).complete(function() { 
    //alert("complete"); 
    $('body').removeClass('wait');
  });
});
4

1 回答 1

1

答案是 joomla 接受了那个字符并对它说不并且没有解析它。所以 jquery 很好并且正在发布数据,但是 joomla 有一个功能可以确保返回的数据是安全的。

所以当我检查 $_POST["searchstring"]; 所有的数据都在那里。

当我使用 JRequest::getVar("searchstring",-1); 它保护我并删除了<。

碰巧,Joomla 在这里解释了这一点:http: //docs.joomla.org/Secure_coding_guidelines 我更改了 getVar 以允许数据通过。

所以这对我有用。$sstr = JRequest::getVar("searchstring",'-1','REQUEST','STRING',JREQUEST_ALLOWRAW);

于 2012-12-05T05:04:29.420 回答