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