我有以下PHP代码,用于检查从单选按钮中选择哪个选项,然后写入同名文件。
例如,来自名为"instrument"的单选按钮组,其中 4 个选项是
- 风
- 字符串
- 击发
- 声乐
如果用户选择"Wind",那么它将创建并写入名为"wind_instrument.txt"的文件。如果选择"字符串",它将创建文件"string_instrument.txt",依此类推。
这是我的PHP代码:
if ($_POST['instrument'] == "wind")
{
$lines = file('wind_instrument.txt');
$fopen = fopen("wind_instrument.txt", "w+");
}
elseif ($_POST['instrument'] == "strings")
{
$lines = file('strings_instrument.txt');
$fopen = fopen("strings_instrument.txt", "w+");
}
elseif ($_POST['instrument'] == "percussion")
{
$lines = file('percussion_instrument.txt');
$fopen = fopen("percussion_instrument.txt", "w+");
}
elseif ($_POST['instrument'] == "vocal")
{
$lines = file('vocal_instrument.txt');
$fopen = fopen("vocal_instrument.txt", "w+");
}
现在,如果满足其中一个条件,则将继续执行代码中的下一步,即:
fwrite($fopen, ("Instrument: ")."");
fwrite($fopen, $_POST["instrument"]."'n");
fwrite($fopen, ("<br>")."'n");
我遇到的问题是它没有创建文件,而且我确实设置了权限。
任何帮助将不胜感激,谢谢。
您实际上可以进行一些重构以使其更易于维护,但这不是您的问题,但我会尽力帮助您。
<?php
$instruments = array('wind', 'strings', 'percussion', 'vocal');
if (in_array($_POST['instrument'], $instruments))
{
$instrument = $_POST['instrument'];
$file_handle = fopen($instrument.'_instrument.txt', 'a+');
$line = 'Instrument: '.$instrument."'n";
fwrite($file_handle, $line);
}
?>
重要的是要知道我如何打开文件。我使用模式 a+。文件说
打开以进行读取和写入;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。
希望有帮助。
如果您已验证您有权打开和写入文件,那么基于条件执行此操作应该没有问题。我建议检查$_POST
的内容,并确保instrument
存在并符合您的条件之一。或者,您可以添加一个 else
子句,如果未收到有效的仪器,该子句会将提交写入错误文件。如果这有效,它将确认问题出在 POSTed 变量上,而不是 fopen/fwrite 上。
如果您在项目符号列表中提供的选项是单选按钮的文本值,那么您的问题是它们是大写的,而您在 if
语句中测试的值不是大写的。要么一致地将它们大写,要么在比较之前使用 strtolower()
将所有内容转换为一致的大小写。