2014-01-07 17 views
-1

this question之后,我意识到只有在使用表单时才能使用$ POST。PHP网址 - 这是一个可行的黑客?

当没有表单仍然使用jQuery或cURL不会解决我需要在URL中发布一个长字符串的问题。

问题

我需要将数据从一个桌面应用程序发送到我的数据库,所以想出最好的办法是使用以下URL格式并追加数据到最后,所以就变成:

www.mysite.com/myscript.php?testdata=somedata,moredata,123,xyz,etc,etc,thisgetslong 

与我以前的脚本,我使用$ GET来读取[testdata =]字符串和我的虚拟主机告诉我$ GET只能读取512个字符,所以这是问题。

哈克

使用下面的脚本,我现在可以写几千字的;我的问题,这是可行的还是有更好的办法?

<? 
include("connect.php"); //Connect to the database 

//hack - read the url directly and search the string for the data i need 

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
$findme = '='; 
$pos = strpos($actual_link, $findme) + 1; //find start of data to write 
$data = substr($actual_link, $pos); //grab data from url 

$result = mysql_query("INSERT INTO test (testdata) VALUES ('$data')"); 

// Check result 
if ($result) {echo $data;} 
else echo "Error ".$mysqli->error; 

mysql_close(); ?> 

编辑: 用PHP代码替换图像。

我已经学会了如何不是要问一个问题 - 不要使用黑客这个词,因为它激怒了人们的羽毛,并且不使用图像代码。

我只是不知道如何将一个长字符串传递给一个无形的PHP页面,虽然我很欣赏人们的回答,但关于cURL的答案对我来说没有意义。从this page,我不清楚你是如何从.NET应用传递字符串的。我显然需要做大量的研究并为我的asinine问题道歉。

+1

不相关,我知道这是测试代码,但请注意,您很容易受到SQL注入攻击。 – Vache

+0

为什么不直接发送POST请求并将其放入主体? – SLaks

+0

@SLaks - 我不知道你的意思,抱歉我的困惑。我在哪里把它放在身体里?我需要从一个独立的应用程序发送一大块数据,我只使用一个url接口,所以我如何创建一个body?你的意思是我应该创建一个PHP表单页面,然后脚本可以使用$ POST? – Data46

回答

1

该网址有一个实际的fixed limit of ~2000 chars,所以你应该而不是将数千个字符传递到URL中。 URL的查询部分仅用于相对较短的一组参数。

相反,你可以建立一个通过cURL/jQuery/etc发送POST请求的请求体。浏览器将如何提交表单数据,您应该也可以这样做。

+0

https://stackoverflow.com/a/3080222/1890644 - 从这段代码我如何将$ myvars从url传递到cURL?对不起,如果这听起来很明显,但我不明白如何传递数据;我错过了什么? – Data46

0

在您的方案中,您需要检查两个重要元素。

首先,执行http操作的客户端是什么?如果客户端将成为浏览器或应用程序,我无法从您的文本中看出来。客户端是您的解决方案中将要调用GET或POST操作的任何东西。

这很重要。当您在线阅读关于查询字符串长度限制的信息时,通常在使用带有长URL的浏览器的人的上下文中。跨浏览器的最大URL长度没有标准。但是,如果你以实际的方式思考它,你永远不会想要通过发布或通过电子邮件发送一个非常大的URL;必须做到剪切和粘贴到客户端浏览器会让人很快感到沮丧。另一方面,如果客户端是应用程序,那么它只是两台机器交换数据,并且实际上没有涉及人为因素。

要检查的第二点是网络服务器。 Web服务器实现可能会限制URL长度,或者可能不会。再次,没有标准。在任何情况下,如果您使用GET操作,您的约束将是您的客户端和服务器都允许的最小值(即,如果两者都没有限制,则没有限制;如果其中一个的最大值为200字节,你的限制是200字节;如果一个人有200字节的限制,另一个人有400字节的限制,你的限制是200字节)

回头看看,你提到“桌面应用程序”,但没有告诉我们你正在开发什么语言,以及什么操作系统。这很重要 - 那是你的客户。

祝你好运。

相关问题