php _GET参数通过URL传递麻烦,对url的任何长度或大小限制?

时间:2016-10-16 19:35:47

标签: php mysql url get

我正在将我的网站移动到新的cPanel linux服务器,这里是新旧服务器的比较:

新服务器: php版本:5.6.25(Zend:2.6.0) 数据库:MySQL 5.5.52-cll 服务器操作系统:Linux 2.6.18-502.el5.lve0.8.85

旧服务器:(据我所知) php版本:5.2.36 数据库:MySQL 5.3.1

大多数代码运行得很好。但是一个档案让我拉出我的头发。这是诀窍:

该功能用于在设置操作后通过URL更新产品数据,假设我点击了"更新"输入表格区域后的按钮。

对于一些具有较少属性的产品,代码输出较短的URL,如下所示,该功能可以完美地更新数据库:

http://www.domainname.com/demo/admin/stock.php?quantity0=1&product_id=188&cPath=81&quantity1=5&product_id=188&cPath=81&quantity2=3&product_id=188&cPath=81&quantity3=0&product_id=188&cPath=81&quantity4=0&product_id=188&cPath=81&quantity5=0&product_id=188&cPath=81&quantity6=0&product_id=188&cPath=81&quantity7=0&product_id=188&cPath=81&quantity8=0&product_id=188&cPath=81&quantity9=0&product_id=188&cPath=81&quantity10=0&product_id=188&cPath=81&quantity11=0&product_id=188&cPath=81&quantity12=0&product_id=188&cPath=81&quantity13=0&product_id=188&cPath=81&quantity14=0&product_id=188&cPath=81&quantity15=0&product_id=188&cPath=81&quantity16=0&product_id=188&cPath=81&quantity17=0&product_id=188&cPath=81&quantity18=0&product_id=188&cPath=81&quantity19=0&product_id=188&cPath=81&quantity20=0&product_id=188&cPath=81&quantity21=0&product_id=188&cPath=81&quantity22=0&product_id=188&cPath=81&quantity23=0&product_id=188&cPath=81&action=Update

BUT:

对于某些具有更多属性的产品,代码输出的URL更长,如下所示,该功能根本不起作用:

http://www.domainname.com/demo/admin/stock.php?quantity0=0&product_id=413&cPath=83&quantity1=0&product_id=413&cPath=83&quantity2=0&product_id=413&cPath=83&quantity3=0&product_id=413&cPath=83&quantity4=0&product_id=413&cPath=83&quantity5=2&product_id=413&cPath=83&quantity6=0&product_id=413&cPath=83&quantity7=0&product_id=413&cPath=83&quantity8=0&product_id=413&cPath=83&quantity9=0&product_id=413&cPath=83&quantity10=0&product_id=413&cPath=83&quantity11=0&product_id=413&cPath=83&quantity12=0&product_id=413&cPath=83&quantity13=0&product_id=413&cPath=83&quantity14=1&product_id=413&cPath=83&quantity15=1&product_id=413&cPath=83&quantity16=0&product_id=413&cPath=83&quantity17=0&product_id=413&cPath=83&quantity18=0&product_id=413&cPath=83&quantity19=0&product_id=413&cPath=83&quantity20=1&product_id=413&cPath=83&quantity21=0&product_id=413&cPath=83&quantity22=0&product_id=413&cPath=83&quantity23=0&product_id=413&cPath=83&quantity24=1&product_id=413&cPath=83&quantity25=1&product_id=413&cPath=83&quantity26=2&product_id=413&cPath=83&quantity27=2&product_id=413&cPath=83&quantity28=3&product_id=413&cPath=83&quantity29=1&product_id=413&cPath=83&quantity30=1&product_id=413&cPath=83&quantity31=1&product_id=413&cPath=83&quantity32=0&product_id=413&cPath=83&quantity33=1&product_id=413&cPath=83&quantity34=1&product_id=413&cPath=83&quantity35=1&product_id=413&cPath=83&quantity36=1&product_id=413&cPath=83&quantity37=1&product_id=413&cPath=83&quantity38=1&product_id=413&cPath=83&quantity39=0&product_id=413&cPath=83&action=Update

我的想法是php.ini / apache / mysql可能有一些设置,甚至是限制URL长度的浏览器,或者其他我甚至不知道的东西。

任何想法都将受到赞赏。

海马

问题解决了。它是指令" suhosin.get.max_vars"的设置。太小,无法在URL中传递太多参数。将值从200加倍到400,它恢复正常。 - 海马11月7日2:36

1 个答案:

答案 0 :(得分:2)

事实上的限制是2000个字符。话虽如此,是否有可能改变它?是。你应该改变吗?不,因为即使您设置了更高的限制,一些最受欢迎的网络浏览器也有自己的限制,使您的应用程序不易访问。

由于您所做的是更新,我建议您使用POST请求而不是GET,然后使用全局变量$ _POST从请求中获取属性。