此表单的目的是更新我服务器上的文件,并在完成后将更新后的更改反映在表单本身上。这是我在一些用户的帮助下获得的当前代码:
<?php
$file = "/var/www/html/colors/color.choices";
$contents = file($file, FILE_SKIP_EMPTY_LINES);
$color = explode("=", $contents[0]);
$size = explode("=", $contents[1]);
$shape = explode("=", $contents[2]);
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';
}
if(!empty($_REQUEST['size_choice'])){
exec('sed -i '.escapeshellarg('s/size=.*/size='.$_REQUEST['size_choice'].'/g')." /var/www/html/colors/color.choices");
echo 'File size choice has been updated';
}
if(!empty($_REQUEST['shape_choice'])){
exec('sed -i '.escapeshellarg('s/shape=.*/shape='.$_REQUEST['shape_choice'].'/g')." /var/www/html/colors/color.choices");
echo 'File shape 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="black" <?php if($color[1] == 'black'){?>selected="selected"<?php }?>>black</option>;
</select>
<input type="submit" name="Submit" value="Submit" />
</form>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name="size_choice">;
<option value="large" <?php if($size[1] == 'large'){?>selected="selected"<?php }?>>large</option>;
<option value="small" <?php if($size[1] == 'small'){?>selected="selected"<?php }?>>small</option>;
</select>
<input type="submit" name="Submit" value="Submit" />
</form>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name="shape_choice">;
<option value="round" <?php if($shape[1] == 'round'){?>selected="selected"<?php }?>>round</option>;
<option value="square" <?php if($shape[1] == 'square'){?>selected="selected"<?php }?>>square</option>;
</select>
<input type="submit" name="Submit" value="Submit" />
</form>
更新:我已经调整了代码,似乎几乎可以正常工作。最后一个选项现在总是按预期工作。因此,在这种情况下,“形状”值现在可以在表单上完美运行。然而,“颜色”和“大小”选项确实会更新 color.choices 文件,但更新不会反映在表单本身上。为什么最后一个选项现在可以在表单上使用,而前两个选项却不行?