我有一个输入$ _GET的表单并将其弹出到MySQL查询中。它的工作方式大致如我所料:
当搜索包含空格的项目时,$ _GET会用“+”替换这些空格。
这是难以解释的地方......
初始查询工作正常,具有空格的项目也从数据库返回没有问题。
然而:
然后我有一个弹出计算窗口,它引用了一个不同的php函数,它将页面$ _GET连接到新url的$ _GET上。
正是在这个阶段,“+”触发了网址的结尾,并且没有显示任何内容。
例如:
这是$ _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似乎无法做我需要的。
答案 0 :(得分:0)
生成查询字符串时,请使用rawurlencode
代替urlencode
。
它将使用%20
而不是+
(RFC 3986),这是PHP所期望的。
或者,我正在运行PHP&gt; = 5.4,您可以将PHP_QUERY_RFC3986
指定为http-build-query中的enc_type参数。
答案 1 :(得分:0)
将<?=$_GET['dialstring']?>
替换为<?=rawurlencode($_GET['dialstring']);?>
,将<?=$_GET['groupSelect']?>
替换为<?=rawurlencode($_GET['groupSelect']);?>
。这应该可以解决问题。