0

動画ファイルの再生とトランスコードを可能にする内部 Web サイトをセットアップしようとしています。設定を追跡するためにファイルをセットアップします。私が今行っているのは、エンコーダーの選択肢を含むドロップダウン ボックスを設定することです。ユーザーが [設定ファイルを更新したい] をクリックすると、選択した内容に更新されます。理想的には、プロセスが Web ページを変更せず、自動的に更新されるようにしたいと考えています。これはおそらく ajax を使用することになります。

私は Web コーディングの経験が非常に限られています。私が現在直面している問題は、$EncoderType 変数を除いて、以下のコードが機能することです。

引用符を付ける$_POST['encoder_Type']と、エラーが発生します。

解析エラー: 構文エラー、予期しない '' (T_ENCAPSED_AND_WHITESPACE)、414 行目の /var/www/index.php の識別子 (T_STRING) または変数 (T_VARIABLE) または数値 (T_NUM_STRING) が必要です

以下は、私が試した引用バージョンです。これは、エラーが発生している行でもあります。

echo $EncoderType = "$_POST['encoder_type']";

     echo "<form ";
        echo $EncoderType = $_POST['encoder_type'];         
        echo "action=";                     
        echo exec("sed -i '8 c\EncoderType:$EncoderType:(1-H264 2-WMV8 3-MPEG 4-MPG4v2)' /home/root/settings");
        echo "method='post'>";
        echo '<select name="encoder_type" onChange="this.form.submit()">';
        echo '<option value="1">H264</option>';
        echo '<option value="2">WMV8</option>';
        echo '<option value="3">MPEG2</option>';
        echo '<option value="4">MPG4v2</option>';
        echo '</select>';
     echo '</form>';

これは私の現在の出力です:

EncoderType::(1-H264 2-WMV8 3-MPEG 4-MPG4v2)

それは読むべきです:

EncoderType:1:(1-H264 2-WMV8 3-MPEG 4-MPG4v2)
4

4 に答える 4

1

あなたが提供したコードは非常に限られています。しかし、これを試してください:

echo "<form ";
    $EncoderType = (int)$_POST['encoder_type'];         
    echo "action=";                     
    echo exec("sed -i '8 c\EncoderType:".$EncoderType.":(1-H264 2-WMV8 3-MPEG 4-MPG4v2)' /home/root/settings");
    echo "method='post'>";
    echo '<select name="encoder_type" onChange="this.form.submit()">';
    echo '<option value="1">H264</option>';
    echo '<option value="2">WMV8</option>';
    echo '<option value="3">MPEG2</option>';
    echo '<option value="4">MPG4v2</option>';
    echo '</select>';
 echo '</form>';

編集への応答 (echo $EncoderType = "$_POST['encoder_type']";): うまくいきません。

<?php $EncoderType = "{$_POST['encoder_type']}";

動作しますが、root アカウントと思われるアカウントで EXEC を使用するため (これは絶対に行わないでください)、$_POST の変数が OK または無害であることを確認してください。だから私はこのようにしました:

<?php $EncoderType = (int)$_POST['encoder_type'];

$EncoderType が整数であることは確かなので、この場合は無害です。エコーを削除します。その場所で変数をエコーし​​たくないと思います。

于 2012-08-15T23:24:59.013 に答える
0

私がこれを正しく読んでいれば、あなたは 2 つのエラーを説明しています。まず、$EncoderType に割り当てようとするとエラーが発生します。これは、スローした PHP エラー テキストです。

これは、エコー行を次のように変更することで修正できます。

$EncoderType = $_POST['encoder_type'];

次に、出力 (/home/root/settings の編集) にエラーが発生しました。実際の出力にはエンコーダーの種類が含まれていません。わかります - たとえばexec()、action 属性はデータの送信先 (つまり、どの Web ページ) であり、実行するアクションではないため、アクションとしてできるとは思いません。

あなたの場合、次のような「process_action.php」などの単純な php ページを作成します。

<?php
  $encType = $_POST['encoder_type'];
  // You should probably rewrite the next line to use native PHP, rather than exec()!
  exec("sed -i '8 c\EncoderType:{$encType}:(1-H264 2-WMV8 3-MPEG 4-MPG4v2)' /home/root/settings"; 
?>

<html>
<head/>
<body>
  Changed encoder type to <?php echo $encType ?>
</body>
</html>

また、送信フォームを純粋な HTML に変更します。私が知る限り、動的なものは必要ないので、次のような形式に変更します。

 <form action='process_action.php' method='post'>
      <select name="encoder_type" onChange="this.form.submit()">
        <option value="1">H264</option>
        <option value="2">WMV8</option>
        <option value="3">MPEG2</option>
        <option value="4">MPG4v2</option>
      </select>
 </form>
于 2012-08-15T23:41:49.580 に答える
0

何をしようとしているのか正確にはわかりませんが、フォームの enctype を設定したい場合は、次のようにする必要があります。

echo $EncoderType . "=" . $_POST['encoder_type'];

その場合、次の行の空白を見逃す可能性があります。

echo " action=";
于 2012-08-15T23:21:45.403 に答える
0

私がこれを正しく読んでいるなら、これがあなたが必要としているものだと思います:

echo "EncoderType='" . $_POST['encoder_type']. "' ";
于 2012-08-15T23:30:43.740 に答える