2016-11-21 1 views
1

私は、PHPにC++からのデータを保存したいとここで私はなぜPHPに複数のパラメータをC++から送信できないのですか?

string cmd = "wget localhost/tem1.php?t=1&date=1&time=1"; 
    system((const char*) cmd.c_str()); 

あなたは私がパラメータt、日付と時刻を送信したい見ることができるように持っているものであるが、それはちょうど2つの他のパラメータを指定せずにTを送信しますここに出力があります:

--2016-11-21 20:56:45-- http://localhost/tem1.php?t=1 
Resolving localhost (localhost)... ::1, 127.0.0.1 
Connecting to localhost (localhost)|::1|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 5 [text/html] 
Saving to: 'tem1.php?t=1' 

なぜそれがかかりますか?これは、UNIX/Linuxシステム上にある場合、その理由はアンパサンド&であるあなたに

+1

'to_string(temperature)'の結果は何ですか?特殊なキャラクターが関わっていますか? 'date'と' time'は有効な文字列ですか? – Jeff

+0

'cmd'の出力を試してみましたか? – AbraCadaver

+0

@Jeffの温度は浮動ですが、私はそれを有効にするために文字列に変換しました。私はこの 'tem1.php?t = 4&date = 3&time = 1'を与え、他のパラメータ(日付と時刻)を無視します。 –

答えて

3

をありがとう、私はリンクバーでそれを書くとき、それは成功し のデータを挿入します :注意*この問題 を解決するために私を助けてください。

execl("/bin/sh", "sh", "-c", command, (char *) 0); 
を: systemは()ライブラリ関数はEXECLを使用して、コマンドで指定されたシェルコマンドを実行する子プロセスを作成するフォーク(2)を使用して(3)次のようにシェル

システムを実行して、コマンドを実行します

コマンドが完了するとsystem()が返されます。

シェルは、コマンドをバックグラウンドに入れて解釈すると、&と解釈します。これを防ぐには、引用符で引数を囲む必要があります。

string cmd = "wget \"localhost/tem1.php?t=" + to_string(temperature) + "&date=" + date + "&time=" + time + "\""; 

これは、アンパサンドだけを残すようにシェルに指示します。

+0

それは動作します!ありがとうございました –

関連する問題