2017-10-04 33 views
0

私は非常に基本的なWebサイトを持っており、Web開発スキルを向上させています。私は、ユーザーが入力したフォームの入力を処理するためにPHPを使用し始めました。スクリプトはフォームからデータを取得し、Pushbullet APIを使用して入力したデータを自分の電話機に送信することになっています。私は、execus関数を使って、pushmsgという/ usr/binディレクトリに置かれたbashスクリプトを実行しています。このスクリプトは3つの引数をとります。これはフォームからの3つの情報です。問題は、3つの変数がexec関数内に置かれても動作しないように見えることです。メッセージは自分の電話機に送信されますが、データが入力されていない状態でpushmsgコマンドを使用して送信するヘッダーのみが送信されます。ここでexecを使用する場合の引数としてのPHP変数

はコードです:

<html> 
    <body> 
    <link rel="stylesheet" type="text/css" href="style.css"> 

    <?php 
    $name = $_POST["name"]; 
    $phone = $_POST["phone"]; 
    $core = $_POST["core"]; 
    exec('pushmsg echo $name echo $phone echo $core'); 
    ?> 
    <h1>request submited successfully</h1> 
    <p>thanks for sending yout request, <?php echo $_POST["name"]; ?>.<br> 
    a text will be sent to <?php echo $_POST["phone"]; ?> once your details have been confirmed. 
    </p> 
    <div class="center"> 
    <button class="button" action="/index.html">home page</button> 
    </div> 
    </body> 
    </html> 

はまた、私はユーザーの入力にexec関数を使用することが特に安全ではありません承知していますが、このウェブサイトはでいつでもパブリックであることを行っていません近い将来、私はそれが必要なときに対処します。

ご協力いただければ幸いです。

+4

二重引用符を使用してエコーからエコーを取り除く – shashi

+0

そして神の愛のために、使用する前に '$ _POST'データを検証してください! – fubar

+0

それは、ありがとう@シャシでした!私がウェブサイト@fubarを公開するとき、私が最後に言ったように、私はそれを調べます。 –

答えて

1

私は、コマンド自体とすることをPHP変数にコマンドを書いた後、使用することをお勧めします:

$command = "pushmsg echo $name echo $phone echo $core"; 
$output = exec($command); 

あなたは$output変数にexecの出力の最後の行をキャッチすることができます。または、shell_execを使用してコマンドの完全な出力をキャッチします。

<html> 
<body> 
<link rel="stylesheet" type="text/css" href="style.css"> 

<?php 
$name = $_POST["name"]; 
$phone = $_POST["phone"]; 
$core = $_POST["core"]; 
$command = "pushmsg echo $name echo $phone echo $core"; 
$output = exec($command); 
?> 
<h1>request submited successfully</h1> 
<p>thanks for sending yout request, <?php echo $_POST["name"]; ?>.<br> 
a text will be sent to <?php echo $_POST["phone"]; ?> once your details have been confirmed. 
</p> 
<div class="center"> 
<button class="button" action="/index.html">home page</button> 
</div> 
</body> 
</html> 
1

あなたが@shashiと@mstruebingが指摘したように、私は単純に倍に単一引用符を置き換えるために必要な

$command = "pushmsg $name $phone $core"; 
$output = exec($command); 
0

にそれを変更する必要があります。これはうまく動作しました。私はエコーも取り除きました。彼らが最初にそこにいるはずがないからです。交換が必要な人は

old: exec('pushmsg echo $name echo $phone echo $core'); 
    new: exec("pushmsg echo $name $phone $core"); 

ありがとう。

関連する問題