1

我有以下 PHP 代码,它检查从单选按钮中选择了哪个选项,然后写入同名文件。

例如,来自名为“instrument”的单选按钮组,其中 4 个选项是

  1. 字符串
  2. 打击乐器
  3. 声乐

如果用户选择“Wind”,那么它将创建并写入一个名为“ 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");

我遇到的问题是它没有创建文件,而且我确实设置了权限。

任何帮助将不胜感激,谢谢。

4

2 回答 2

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+。文件说

开放阅读和写作;将文件指针放在文件末尾。如果该文件不存在,请尝试创建它。

希望有帮助。

于 2012-05-30T15:12:31.893 回答
2

如果您已验证您有权打开和写入文件,那么根据条件执行此操作应该没有问题。我建议检查内容$_POST并确保其instrument存在并满足您的条件之一。或者,您可以添加一个else子句,如果未收到有效工具,则将提交写入错误文件。如果可行,它将确认问题出在 POSTed 变量上,而不是 fopen/fwrite。

如果您在项目符号列表中提供的选项是单选按钮的文字值,那么您的问题是它们是大写的,而您在if语句中测试的值不是。要么一致地将它们大写,要么strtolower()在比较之前将所有内容转换为一致的大小写。

于 2012-05-30T15:09:13.063 回答