如何在不使用浏览器的情况下将数据发送到PHP页面?

时间:2014-01-07 22:53:26

标签: php curl mql4

由于我的困惑和无知,我的另外两个问题没有得到很好的解决(herehere);我将有一个最后的bash来澄清我的问题。

我需要从我的交易终端发送历史交易和信号。代码使用MQL(C变体)并使用 Wininet.dll 。我可以使用以下方法将数据发送到我的服务器:

string sData, url;
sData = "abc123,etc,etc";
url = "webname.com/PHP/insert.php?testdata="+sData;
int request = InternetOpenUrl (open, url, NULL, 0, 0, 0);

我想在我的网站上使用 insert.php 脚本来读取[testdata =]之后的字符串,然后将其插入我的数据库以进行进一步分析。此字符串可能长达数千个字符,这会导致URL长度限制。

人们已经提到过cURL和jQuery,但是我不明白上面的代码是如何用来模拟POST请求的,因为数据字符串会变得非常大,这取决于我从我的交易日志中选择的日期。

我想尝试以正确的方式去做,但这只是机器在没有任何形式的情况下相互交谈,所以这让我感到困惑。

如果我使用this cURL example,如何将长字符串传递给$ data变量?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以使用Wininet的HttpSendRequest来完成POST,同时使用尽可能少的GET /查询数据来保持URL短。您还将使用HttpOpenRequest。一些示例c ++代码可从another stackoverflow post获得。您可以更改dataPayload以满足您的需求。

答案 1 :(得分:0)

成功:))))))))))))))

我设法用数以万计的字符写入我的数据库。我在连接时遇到问题,因为我在域名中使用了http://但是当我删除它时,代码工作了,我能够与我的脚本交谈。

MQL(C语言)

string myData = "testdata=abc123etc...";
string header = "Content-Type: application/x-www-form-urlencoded";
int open = InternetOpen("HTTP_Client_Sample", 0, "", "", 0); 
int connect = InternetConnect(open, "website.com", 80, "", "", 3, 0, 1); 
int request = HttpOpenRequest(connect, "POST", "/PHP/insert.php", NULL, NULL, acceptTypes, 0, 1);
HttpSendRequest(request, header, StringLen(header), myData , StringLen(myData));

<强> PHP

注意我现在能够使用$ _POST方法,该方法有以下限制:

suhosin.post.max_value_length 1000000

绰绰有余我的需求。之前,我的PHP脚本使用$ _GET,它只能读取512个字符。

include("connect.php"); //Connect to the database
$data = $_POST['testdata'];
$result = mysql_query("INSERT INTO test (testdata) VALUES ('$data')");
if ($result) echo $data;
else echo "Error ".$mysqli->error;
mysql_close(); 

感谢大家的帮助,非常感谢:)