2012-08-15 85 views
0

我正在嘗試設置一個內部網站,以允許在視頻文件上播放和轉碼。我設置了一個文件來跟蹤設置。我現在在做的是設置一個帶有編碼器選項的下拉框。當用戶點擊時,我想更新設置文件,以便將其更新爲所選內容。理想情況下,我希望該過程不要更改網頁並自動更新,這可能會與ajax。

我對網頁編碼的經驗非常有限。我現在運行的問題是,我的代碼在下面的工作,除了$ EncoderType變量。

當我把引號$_POST['encoder_Type']我結束了一個錯誤:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /var/www/index.php on line 414

下面是我已經盡引述版本。這也是被給予錯誤的行:

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

這聽起來像是你有不匹配的報價地方 - 你可以添加該行的引用版本? – andrewsi 2012-08-15 23:21:05

+0

@andrewsi更新以反映所引用的版本。 – 2012-08-15 23:25:14

+0

哪一個是414行? – ernie 2012-08-15 23:25:43

回答

0

我不完全確定你想要做什麼,但是如果你想設置你的表單的文本類型,你應該這樣做:

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

而且在這種情況下,你可能會錯過在下面一行空格:

echo " action="; 
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>'; 

響應您的編輯(回聲$ EncoderType = 「$ _ POST [ 'encoder_type']」): 這不會工作。

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

將工作,但因爲你對什麼似乎是一個root帳戶使用EXEC(請永遠不要做),請確保在$ _POST變量是確定或無害的。所以我這樣做:

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

然後你肯定$ EncoderType是一個整數,因此在這種情況下無害。並刪除回聲,我不認爲你想在該地方回聲變量。

0

如果我讀這個權利,我覺得這是你所需要的:

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

如果我正確地讀這篇文章,你所描述的兩個錯誤。首先,當您嘗試分配給$ EncoderType時出現錯誤,這是您拋出的PHP錯誤文本。

,可以通過改變回聲線被固定爲:

$EncoderType = $_POST['encoder_type']; 

其次,你有一個錯誤與輸出(/家/根/設置的編輯),其中編碼器類型不在實際的輸出中,這是有道理的,因爲你的行動永遠不會實際運行,盡我所知 - 例如我不認爲你可以將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>