使用formsubmit发送$ _POST变量

时间:2012-08-15 23:18:00

标签: php html

我正在尝试设置一个允许在视频文件上播放和转码的内部网站。我设置了一个文件来跟踪设置。我现在正在做的是设置一个带编码器选项的下拉框。当用户单击时我想更新设置文件,以便将其更新为所选的任何内容。理想情况下,我希望该流程不会更改网页并自动更新,这可能与ajax有关。

我对网络编码的经验非常有限。我现在遇到的问题是我的代码工作正常,但$ EncoderType变量除外。

当我在$_POST['encoder_Type']周围加上引号时,我最终会收到错误:

  

解析错误:第414行的/var/www/index.php中的语法错误,意外的''(T_ENCAPSED_AND_WHITESPACE),期待标识符(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 个答案:

答案 0 :(得分: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中的变量是正常的或无害的。所以我这样做了:

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

然后你确定$ EncoderType是一个整数,因此在这种情况下是无害的。并删除回声,我不认为你想回应那个地方的变量。

答案 1 :(得分:0)

我不确定你要做什么,但是如果你想设置表单的enctype,你应该这样做:

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

在这种情况下,您可能会错过以下行中的空格:

echo " action=";

答案 2 :(得分:0)

如果我读得对,我认为这就是你需要的:

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

答案 3 :(得分:0)

如果我正确读到这个,你就是在描述两个错误。首先,当您尝试分配给$ EncoderType时出现错误,这是您抛出的PHP错误文本。

可以通过将回波线更改为:

来修复
$EncoderType = $_POST['encoder_type'];

其次,你的输出错误(编辑/ home / root / settings),其中编码器类型不在实际输出中,这是有道理的,因为你的动作永远不会像据我所知 - 例如我不认为你可以exec()作为一个动作,因为动作属性是发送数据的位置(即什么网页),而不是要执行的动作。

在你的情况下,我会写一个简单的php页面,例如“process_action.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>