0

为我有史以来最长的问题道歉。我正在尝试与 ROOT(用于高能物理分析的 C++ 中的 CERN 框架)中的 mysql 数据库的 php 前端接口。首先,我试图让这个 php 界面很好地使用wgetcurl首先是因为我更熟悉它们。以下命令有效:

wget --post-data "hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases;" http://some.host.edu/log/log_query_matlab.php

结果是:

database1

database2

那挺好的。如果我省略了,--post-data那么我会得到结果:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 6
i'm dead! Access denied for user 'admin'@'localhost' (using password: NO) 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'admin'@'localhost' (using password: NO) in /log/log_query_matlab.php on line 29

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /log/log_query_matlab.php on line 29

我可以访问 php 脚本(只读),但错误本身并不太重要。重要的是使用 ROOT,我使用了一个名为 as socket.SendRaw(message, message.Length())(socket is a ) 的函数,如果我的“消息”是,这给了我与没有发布数据开关TSocket相同的“错误”wget

"POST http://some.host.edu/log/log_query_matlab.php?hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show_spazio_databases"

这可能是徒劳的,但是有人知道我应该格式化包含与--post-data开关等效的内容的“消息”的方式。或者,是否有一种标准方法可以在一行中格式化 POST 请求(我见过多行的东西。对吗?)对不起,我一无所知!

PS。mysql 查询是show databases,但空格已被替换为_spazio_, Italian for space。db 和 php 接口的作者需要它(以及符号的各种替换),但是以前有人见过吗?试图排除故障是可怕的!

4

1 回答 1

0

正确的“单线”(必须是多线)是:

POST http://some.host.edu/log/log_query_matlab.php HTTP/1.1
Host: some.host.edu
Content-Type: application/x-www-form-urlencoded
Content-Length: 73

hostname=localhost:3306&un=joeuser&pw=psswd&myquery=show databases

每行的末尾都有\r\n. content-length 之后的间隙有两组。

于 2010-04-10T00:58:20.370 回答