我有以下PHP代码,用于检查选中单选按钮中的哪个选项,然后写入同名文件。
例如,来自名为“乐器”的单选按钮组,其中4个选项是
如果用户选择“风”,则会创建并写入名为“ wind_instrument.txt ”的文件。如果选择“strings”,它将创建文件“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");
我遇到的问题是,它没有创建文件,我确实设置了权限。
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
你实际上可以做一些重构,以便更容易维护,但这不是你的问题,但我会尽力帮助你。
<?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 + 。文档说
开放阅读和写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。
希望有所帮助。
答案 1 :(得分:2)
如果您已经验证您有权打开和写入文件,那么基于条件执行它应该没有问题。我建议您检查$_POST
的内容并确保instrument
存在且符合您的某个条件。或者,您可以添加else
子句,如果未收到有效的工具,则会将提交写入错误文件。如果可行,它将确认问题是POSTed变量,而不是fopen / fwrite。
如果您在项目符号列表中提供的选项是单选按钮的文字值,那么问题在于它们是大写的,而您在if
语句中测试的值则不是。要么一致地将它们大写,要么在比较之前使用strtolower()
将所有内容转换为一致的大小写。