php表单exec、sed和文件获取内容

php表单exec、sed和文件获取内容,php,forms,sed,exec,file-get-contents,Php,Forms,Sed,Exec,File Get Contents,我正在编写一个脚本,以便在我的vps上编辑一个文件,到目前为止,由于一位用户的帮助,我有以下几点: <?php if(!empty($_REQUEST['color_choice'])){ exec('sed -i '.escapeshellarg('s/color=.*/color='.$_REQUEST['color_choice'].'/g')." /home/user/colors/color.choices"); echo 'File color choi

我正在编写一个脚本,以便在我的vps上编辑一个文件,到目前为止,由于一位用户的帮助,我有以下几点:

    <?php
if(!empty($_REQUEST['color_choice'])){
    exec('sed -i '.escapeshellarg('s/color=.*/color='.$_REQUEST['color_choice'].'/g')." /home/user/colors/color.choices");
    echo 'File color choice has been updated';
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <select name="color_choice">;
        <option value="red">red</option>;
        <option value="blue">blue</option>;
        <option value="black">black</option>;
        <option value="orange">orange</option>;
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>

如果是你干的呢

<?php
    $current = file_get_contents("/var/www/html/colors/color.choices");
    $color = explode("=", trim($current));

    if(!empty($_REQUEST['color_choice'])){
        exec('sed -i '.escapeshellarg('s/color=.*/color='.$_REQUEST['color_choice'].'/g')." /var/www/html/colors/color.choices");
        echo 'File color choice has been updated';
    }
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <select name="color_choice">;
        <option value="red" <?php if($color[1] == 'red'){?>selected="selected"<?php }?>>red</option>;
        <option value="blue" <?php if($color[1] == 'blue'){?>selected="selected"<?php }?>>blue</option>;
        <option value="black" <?php if($color[1] == 'black'){?>selected="selected"<?php }?>>black</option>;
        <option value="orange" <?php if($color[1] == 'orange'){?>selected="selected"<?php }?>>orange</option>;
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>


我很想帮你,但是你现在的问题有点不清楚。提供有关需要从中检索信息的文件的更多详细信息。考虑到您当前的问题,很难准确理解代码的作用(它只是一个简单的表单和exec调用)。你的应用程序目前做什么,它应该做什么?提交表格的先决条件/后决条件?给我们更多的细节,这样我们可以帮助!另外,您不应该让表单提交到$\u服务器['PHP\u SELF']——糟糕的做法!——如果提交给self,则不需要action attr。您需要先获取值,然后将其作为表单上的默认选项。现在如何检索该值?或者值存储在哪里?我的脚本只是一个简单的form和exec调用,文件本身只有以下值:color=x。我基本上希望表单始终反映服务器上文件中的当前值。因此,如果我使用表单字段将值更改为蓝色,我希望它显示该值现在在表单上设置为蓝色。目前,即使在做了更改之后,每次它都会返回显示“红色”。另外,当我回到页面时,即使值已更改为蓝色,它也只会显示红色。该文件内部是什么样的/home/user/colors/color.choice当前只有以下值:color=blueThank。我尝试了一下,它似乎正确地读取了文件中的值,但并没有改变它们。对于
$color[1]
的值,您得到了什么?比如,如果你回显或打印,好吧,我打赌这是因为读取文件的权限。它必须位于/home/user目录中,还是可以位于web文件所在的www目录中?否则,您必须更改所有权,以便PHP可以读取它。当我将文件移动到web根目录下,PHP可以以所有者/组作为web用户读取它。上面的代码工作得很好。注意我对color.choices的位置所做的更改。如果你不能做到这一点,你将需要更新所有权,以便PHP可以读取目录中的文件。看起来你第一次实际上是正确的,我忘记了将exec行更改为文件的正确位置!这很有魅力,谢谢你的帮助,我很感激!