0

PHPexec()関数を介してphp関数を実行していますが、一度に1つの変数しか通過しないようです。

$url = "http://domain.co/test.php?phone=123&msg=testing"
exec('wget '.$url);

私が持っているtest.phpファイル内

$msg = "msg =".$_GET["msg"]." number=".$_GET["phone"];
mail('me@gmail.com', 'Working?', $msg);

電話変数のみを返すメールを受け取ります。

しかし、次のようにURLを変更すると

$url = "http://domain.co/test.php?msg=testing&phone=123"

わかりますmsgが、そうではありませんphoneか?この奇妙な動作の原因についてのアイデアはありますか?

4

2 に答える 2

4

&記号は、Unix シェルの特殊文字です。あなたはそれをエスケープする必要があります:

exec("wget '$url'");

また、URL がなんらかの方法でユーザー入力に基づいている場合は、 でエスケープするように十分注意してescapeshellargください。そうしないと、ユーザーがサーバー上で任意の Unix コマンドを実行できるようになります。

于 2013-07-17T14:07:11.153 に答える
1
$url = "http://domain.co/test.php?phone=123&msg=testing"
exec('wget "'.$url.'"');

URLを引用する必要があります


& は、タスクをバックグラウンドに置くためのサインです

于 2013-07-17T14:07:45.150 に答える