1

我有一个输入 $_GET 并将其弹出到 MySQL 查询中的表单。它的工作原理大致如我所料:

搜索包含空格的项目时,$_GET 将这些空格替换为“+”。

这就是很难解释的地方......

初始查询工作正常,那些带有空格的项目也从数据库返回没有问题。

然而:

然后我有一个弹出计算窗口,它引用一个不同的 php 函数,该函数将页面 $_GET 连接到新 url 的 $_GET 上。

正是在这个阶段,“+”触发了 url 的结尾并且不显示任何内容。

例如:

这是 $_GET?dialstring=&groupSelect=uk+vodafone 但是弹出窗口将 $_GET 作为?dialstring=&groupSelect=uk

我认为可能是 JS 弹出代码破坏了 $_GET ,如下所示:

function modalcalc(){ 
      $('<div>').dialog({
      title:    'Calculator',
      height: '350', 
      width:    '400',
      open: function ()
        {
        $(this).load('<?=base_url();?>ratesheet/calculator/<?=$this->uri->segment(3);?>/?dialstring=<?=$_GET['dialstring']?>&groupSelect=<?=$_GET['groupSelect']?>');
        },         
modal: true 
});
return false;
}`

为了其余的大量功能,我需要/希望将其保留为 $_GET,因为 $_POST 似乎无法满足我的需要。

4

2 回答 2

0

在生成查询字符串时使用rawurlencode而不是。urlencode

它将使用PHP 所期望%20的代替(RFC 3986)。+

或者,我正在运行 PHP >= 5.4,您可以在http-build-queryPHP_QUERY_RFC3986中指定为 enc_type 参数 。

于 2013-06-14T10:13:11.180 回答
0

替换<?=$_GET['dialstring']?><?=rawurlencode($_GET['dialstring']);?>和。<?=$_GET['groupSelect']?>_ <?=rawurlencode($_GET['groupSelect']);?>这应该够了吧。

于 2013-06-14T10:15:51.223 回答