Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些字符串未通过GET到达PHP_Php_Javascript - Fatal编程技术网

某些字符串未通过GET到达PHP

某些字符串未通过GET到达PHP,php,javascript,Php,Javascript,我正在使用一个非常简单的模拟应用程序来查询数据库并在地图上显示结果。应用程序向服务器发送一个GEThttprequest,该服务器返回一个序列化的值数组。httprequest的基本结构是: httpRequest.open("GET","handle-query.php?query=" + queryJs) 另一方面: $queryPhp = $_GET["query"]; 当查询看起来像这样时 ["SELECT%SUM(commit)%FROM%financialdata%WHERE%r

我正在使用一个非常简单的模拟应用程序来查询数据库并在地图上显示结果。应用程序向服务器发送一个
GET
httprequest,该服务器返回一个序列化的值数组。httprequest的基本结构是:

httpRequest.open("GET","handle-query.php?query=" + queryJs)
另一方面:

$queryPhp = $_GET["query"];
当查询看起来像这样时

["SELECT%SUM(commit)%FROM%financialdata%WHERE%region='Centre'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%region='Kara'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%region='Maritime'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%region='Plateaux'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%region='Savanes'"]
…然后它被正确地传递到服务器,并生成响应。但是,当查询看起来像这样时

["SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Sotouboua'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Tchamba'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Tchaoudjo'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Assoli'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Bassar'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Bimah'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Doufelgou'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Keran'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Kozah'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Golfe'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Lacs'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Vo'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Yoto'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Zio'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Amou'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Haho'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Kloto'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Ogou'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Wawa'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Oti'", "SELECT%SUM(commit)%FROM%financialdata%WHERE%prefect='Tone'"]
…然后服务器收到一个空字符串。这两个字符串都是由同一个函数生成的,并且都可以在我的虚拟服务器(WAMP)上完美地工作。如果有人有任何想法,我们将不胜感激


(另一方面,在阅读之后,我意识到我应该使用一个具有更好的消毒功能的框架,等等,但这只是一个演示,可能需要在线生活2个小时,修复这个小东西比重新开始要好。它在我的本地主机上运行得非常好。)

要回答您的问题,您将发送一个get参数作为
query
(handle query.php?query=),然后将其作为
queryJS
(queryJS)执行

我应该这样做


(正如每个人都指出的那样,不要以明文或其他方式发送SQL,除非您计划不实际执行SQL,并且您只是想宣传您的db结构,也许它很漂亮。)

您是通过GET请求发送SQL查询吗?你疯了吗?你需要
encodeURIComponent()
加油@Pointy:OP有枪,想开枪自杀,不知道扳机在哪里。。。你给了她答案吗?只是想补充一下@epascarello:使用POST不会更好。只是不要将SQL从客户端发送到服务器。和
encodeURIComponent
,然后再发送任何其他内容。@Tibo认为这种方法非常可怕,这一点似乎很明显,
encodeURIComponent()
即使在将设计更改为不那么疯狂的设计之后也很重要。我们都对注入漏洞感到困惑,以至于没有人注意到。。。不过,该值仍需要正确的URL编码。谢谢您的回答。实际上是打字错误。以上编辑。代码可以在第一个字符串上运行,但不能在其他字符串上运行。需要注意的几点是:首先,您确实应该对这些字符串进行url编码,特别是因为字符串中有%,这可能会被服务器疯狂地解释(我有点惊讶于您的本地工作,所以这可能不是问题所在)。其次,对数据进行url编码会得到1873个字符的长度,非常接近url限制,所以尝试破解几个(半个)数组参数,看看这是否有帮助。我现在看到的另一件事是,你在第二个字段中键入了另一个列,所以可能你的远程数据库中有一些内容(与本地测试环境相比)这是不同的,并且很早就转储了。(这假设您实际上在服务器上同时获得了一些东西,并且在您到达检查某些东西的部分之前就已经死亡了…抱歉,这里的猜测率不高)谢谢你的建议。这是键入一个不同的列,但我不知道为什么远程和本地会有所不同。我尝试了较短的长度和URL编码。抛开上面一些评论的咄咄逼人的语气不谈,我认为很明显,我的解决方案太差了,无法尝试补救,因此我会在这个基础上接受这个答案回到一开始,用一个合适的框架。谢谢大家的建议!
$_GET['query'] // instead of $_GET['queryJs']