从PHP获取内容:POST和查询出现问题

时间:2010-04-08 05:32:09

标签: mysql http post header root-framework

对我有史以来最长的问题道歉。我正在尝试在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,我使用一个名为socket.SendRaw(message, message.Length())的函数(套接字是TSocket),如果没有post数据切换,这给了我与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请求(我见过multi-line stuff。这是对的吗?)抱歉,我很无能为力!

PS。 mysql查询是show databases,但空格已替换为_spazio_,意大利语为空格。 db和php接口的作者需要它(以及符号的各种替换),但有没有人见过这个?试图解决这个问题很糟糕!

1 个答案:

答案 0 :(得分: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。内容长度之后的差距有两组。