0

SOに関する私の最長の質問をお詫びします。ROOTのmysqlデータベース(高エネルギー物理分析用のC ++のCERNフレームワーク)の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と同じ「エラー」が発生します。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リクエストを1行でフォーマットする標準的な方法はありますか(複数行のものを見たことがあります。そうですか?)申し訳ありませんが、わかりません。

PS。mysqlクエリはですが、スペースは、スペースを表すイタリア語にshow databases置き換えられました。_spazio_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の後のギャップには、それらが2セットあります。

于 2010-04-10T00:58:20.370 に答える